V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuqiccr
V2EX  ›  正则表达式

想请教一个正则相关问题

  •  
  •   xuqiccr · 2021-07-19 14:29:38 +08:00 · 696 次点击
    这是一个创建于 1256 天前的主题,其中的信息可能已经有所发展或是发生改变。
    字符串"水果,蔬菜,肉类,水产(大闸蟹,小龙虾),鲜花", 怎么用正则匹配出["水果", "蔬菜", "肉类", "水产(大闸蟹,小龙虾)", "鲜花"]的结果呢?谢谢大佬们。
    3 条回复    2021-07-20 16:00:43 +08:00
    netwjx
        1
    netwjx  
       2021-07-19 14:49:32 +08:00   ❤️ 1
    低配版: (?:^|,)([^,]+)
    后续自行 filter 一次 "(大闸蟹,小龙虾)" 的匹配

    高配版: 需要你的正则库支持平衡组
    https://blog.csdn.net/zm2714/article/details/7946437
    0ZXYDDu796nVCFxq
        2
    0ZXYDDu796nVCFxq  
       2021-07-19 16:19:45 +08:00   ❤️ 1
    这个不应该用正则来做
    写个函数,设置一个空数组,一个索引初始值=0,一个 int=0
    遍历字符串
    遇到'(',int += 1,遇到')',int -= 1
    遇到','并且 int == 0 把 str[索引:当前位置] append 到数组,更新索引

    这个远比正则的可维护性高得多
    可能,你下次还会有更多正则问题
    netwjx
        3
    netwjx  
       2021-07-20 16:00:43 +08:00
    @gstqc 状态机 ^_^
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4695 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:56 · PVG 17:56 · LAX 01:56 · JFK 04:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.