我试图标记以下格式的字符串:
"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]