我的目标是将此字符串与正则表达式分开:
AA(1.2,1.3)+,BB(125)-,CC(A,B,C)-,DD(QWE)+
列表:
问候。
答案 0 :(得分:3)
此正则表达式适用于您的示例字符串:
,(?![^(]+\))
这会在逗号上拆分,但使用否定前瞻来断言下一个括号字符不是右括号。即使没有以下括号,它仍会分裂。
这里有一些java代码,证明它可以处理您的示例以及一些显示其稳健性的常规输入:
String input = "AA(1.2,1.3)+,BB(125)-,FOO,CC(A,B,C)-,DD(QWE)+,BAR";
String[] split = input.split(",(?![^(]+\\))");
for (String s : split) System.out.println(s);
输出:
AA(1.2,1.3)+
BB(125)-
FOO
CC(A,B,C)-
DD(QWE)+
BAR
答案 1 :(得分:1)
我不知道您使用的是哪种语言,但这会在grep
中显示:
$ grep -o '[A-Z]*([A-Z0-9.,]*)[^,]*' file
AA(1.2,1.3)+
BB(125)-
CC(A,B,C)-
DD(QWE)+
[A-Z]*([A-Z0-9.,]*)[^,]*
^^^^^^ ^^^^^^^^^^^ ^^^^^
| ^ | ^ |
| | | | everything but a comma
| ( char | ) char
| A-Z 0-9 . or , chars
list of chars from A to Z