我正在尝试读取文本文件,按照下面的说明拆分内容,并将拆分注释附加到Java列表中。
错误发生在拆分部分。
现有字符串:
a1(X1, UniqueVar1), a2(X2, UniqueVar1), a3(UniqueVar1, UniqueVar2)
预期 - 将它们拆分并将它们附加到Java列表中:
a1(X1, UniqueVar1)
a2(X2, UniqueVar1)
a3(UniqueVar1, UniqueVar2)
代码:
subSplit = obj.split("\\), ");
for (String subObj: subSplit)
{
System.out.println(subObj.trim());
}
结果:
a1(X1, UniqueVar1
a2(X2, UniqueVar1
...
请建议如何纠正此问题。
答案 0 :(得分:9)
在正则表达式中使用positive lookbehind:
String[] subSplit = obj.split("(?<=\\)), ");
此表达式与前面带有,
的{{1}}相匹配,但因为后瞻部分)
是非捕获(零宽度),所以它不会被丢弃成为拆分分离器的一部分。
有关环视断言和非捕获组的更多信息,请参阅javadoc of the Pattern
class。