我正在尝试标记以下格式的字符串:
"98, BA71V-CP204L (p32, p30), BA71V-CP204L (p32, p30), , 0, 125900, 126505"
"91, BA71V-B175L, BA71V-B175L, , 0, 108467, 108994, -, 528, 528"
每个标记将被存储在一个字符串数组中。字符串将用“,”标记,排除 ( , ) 内的字符串,以便 ( , ) 的内容属于标记。标记也可能只包含一个空格。
我认为正则表达式会找到一个逗号,然后检查它的左侧是否由左括号包围,右侧是否由右括号包围。由于该逗号包含在 some () 中,因此不会用于标记。
我可以有一个相反的正则表达式,但是当分隔符两边都不包含“(”或“)”时怎么办?
目前正在使用:
StringTokenizer tokaniza = new StringTokenizer(content,","); //no regex
但我觉得正则表达式更好用
content.split();
最佳答案
使用否定的前瞻断言。
String s = "98, BA71V-CP204L (p32, p30), BA71V-CP204L (p32, p30), , 0, 125900, 126505";
String parts[] = s.split(",(?![^()]*\\))");
System.out.println(Arrays.toString(parts));
输出:
[98, BA71V-CP204L (p32, p30), BA71V-CP204L (p32, p30), , 0, 125900, 126505]
关于Java - 通过正则表达式进行标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28510307/