在http://regexstorm.net/tester
我使用以下模式:
(?:(?!\(|\)|\,).)*(?:(?:(?'open'\()(?:(?!\(|\)).)*)+((?'content-open'\))(?:(?!\(|\)|\,).)*)+)*(?(open)(?!))
以下值:
(asi(de, fghdfh(fghjgh))),(dfgsdg)
rtyerty,
dhggjkmf,
bnmvbm,
cvbngfh,
iopuip
对我来说,每一场比赛都是空的。如果您将第一个*
切换为+
,它可以正常工作,但我需要它是*
,因为在平衡之前不必有任何字符 - 组。我知道我可以忽略空的比赛,但这对我来说很烦人,我想知道我的模式是否有问题?
是否有匹配的特定字符或锚点,我可以使用[^...]
组而不是初始.
?
答案 0 :(得分:0)
我认为你会遇到重叠的替补比赛: 我试图简化模式。我不完全在那里(我希望我没有删除太多)但这应该是一个改进:
(?:[^(),])*(?:(?:(?<open>\()(?:[^()])*)+|((?<content-open>\))(?:[^(),])*))*
无论哪种方式,如果你的模式符合你想要的模式。