0

http://regexstorm.net/tester我使用以下模式:

(?:(?!\(|\)|\,).)*(?:(?:(?'open'\()(?:(?!\(|\)).)*)+((?'content-open'\))(?:(?!\(|\)|\,).)*)+)*(?(open)(?!))

以及以下值:

(asi(de, fghdfh(fghjgh))),(dfgsdg)
rtyerty,
dhggjkmf,
bnmvbm,
cvbngfh,
iopuip

对我来说,其他所有比赛都是空的。如果您将第一个切换*到 a ,它可以正常工作+,但我需要它是 a *,因为在平衡组之前不必有任何字符。我知道我可以忽略空匹配,但这对我来说有点烦人,我想知道我的模式是否有问题?

是否有一个匹配的特定角色或锚我可以放入一个[^...]组中使用而不是初始.

4

1 回答 1

0

我认为您会遇到重叠的替代匹配:
我试图简化模式。我不完全在那里(我希望我没有删除太多)但这应该已经是一个改进:

(?:[^(),])*(?:(?:(?<open>\()(?:[^()])*)+|((?<content-open>\))(?:[^(),])*))*

无论哪种方式,如果您的模式符合您的要求,请坚持下去。

于 2017-11-08T07:29:59.447 回答