我正在尝试读取文本文件,按照下面的说明拆分内容,并将拆分注释附加到Java列表中.
错误发生在拆分部分.
现有字符串:
a1(X1, UniqueVar1), a2(X2, UniqueVar1), a3(UniqueVar1, UniqueVar2)
Run Code Online (Sandbox Code Playgroud)
期望 - 将它们拆分并将它们附加到Java列表:
a1(X1, UniqueVar1)
a2(X2, UniqueVar1)
a3(UniqueVar1, UniqueVar2)
Run Code Online (Sandbox Code Playgroud)
码:
subSplit = obj.split("\\), ");
for (String subObj: subSplit)
{
System.out.println(subObj.trim());
}
Run Code Online (Sandbox Code Playgroud)
结果:
a1(X1, UniqueVar1
a2(X2, UniqueVar1
...
Run Code Online (Sandbox Code Playgroud)
请建议如何纠正此问题.
在正则表达式中使用正面lookbehind:
String[] subSplit = obj.split("(?<=\\)), ");
Run Code Online (Sandbox Code Playgroud)
此表达式匹配,前面带有a ),但由于lookbehind部分(?<=\\))是非捕获(零宽度),因此它不会作为拆分分隔符的一部分而被丢弃.
有关环视断言和非捕获组的更多信息可以在Pattern类的javadoc中找到.