拆分并替换Java字符串

vik*_*405 4 java string

我正在尝试读取文本文件,按照下面的说明拆分内容,并将拆分注释附加到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)

请建议如何纠正此问题.

Rob*_*sen 9

则表达式中使用正面lookbehind:

String[] subSplit = obj.split("(?<=\\)), ");
Run Code Online (Sandbox Code Playgroud)

此表达式匹配,前面带有a ),但由于lookbehind部分(?<=\\))是非捕获(零宽度),因此它不会作为拆分分隔符的一部分而被丢弃.

有关环视断言和非捕获组的更多信息可以Patternjavadoc中找到.