正则表达式捕获组和子捕获组

时间:2017-10-19 17:05:33

标签: regex

这是我的teststring:

  

1,费用,(1234,GTE),W2,(),$

我想要的输出是:

1
feE
(1,234,gtE)
w2

$

我用PHP编程而不是用.NET编程。 整个字符串要复杂得多,但这部分我无法为自己解决。

我的想法是:用逗号或值和图案来找几个值或一个元组。

(?|(([^(),]+),|((\([^()]\)+))))

但我找不到解决方案。 有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

令我不安的是第5场比赛,是空的,而第3场则是括号。

无论如何,根据你的例子,使用以下内容应该没问题:

(?=\()(?:\([^)]+\)|)|[^,()]+
                   ^
    Here, as alternative is nothing, empty pair of parenthesis retrieves an empty match

请参阅demo

考虑到所需的真实匹配(即括号即使在空时也应该匹配),您可以修改如下:

(?:\([^)]*\))|[^,()]+

已删除Lookahead以跳过识别前导括号,直接匹配它。还删除了之间的空转比赛,因为它不再需要了。

更新了demo