我有下面的正则表达式/[^,\s]+(?:\s+\([^)]*\))?/g
,它允许我匹配用逗号分隔的元素,同时忽略()
中的逗号
有了这个:
a,b,c (aaa, bbb, ccc),d
我明白了
a
b
c (aaa, bbb, ccc)
d
现在,我想升级它来考虑另一个层次的圆括号。我不想考虑任何层次(我知道递归是不可能的),而只想考虑最多2个层次。
有了这个:
a,(b, b),c (aaa, (bbb, cccc, ddd)),d
我需要
a
(b, b)
c (aaa, (bbb, cccc, ddd))
d
我正在使用https://regex101.com/进行测试,看是否有帮助。
1条答案
按热度按时间c9x0cxw01#
您可以使用
请参见regex demo。
正则表达式匹配一个或多个重复的
\([^()]*(?:\([^()]*\)[^()]*)*\)
-a(
+零个或多个非括号字符+括号之间的子字符串零次或多次重复,后跟零个或多个非括号字符+a)
字符(最大两级嵌套括号之间的子字符串)|
-或[^,]
-逗号以外的字符。