我有以下字符串:
1,2,3 | 5,4,5 | 8
我希望输出如下:
1,2,3 | 5
4,5 | 8
如何使用java实现这一点?
我的意思是与"|"
分开,但前提是它在{{1}}之后。
答案 0 :(得分:4)
添加positive lookbehind条件,例如:
"1,2,3|5,4,5|8".split("(?<=\\|\\d{1,10}),"))
Lookbehind条件(?<=\\|\\d{1,10})
表示:|
后跟最多10位数(因为lookbehind需要定义最大长度,无限重复修饰符+
或*
不能使用)
答案 1 :(得分:3)
一种方法是使用lookbehind:
for (String s : "1,2,3|5,4,5|8".split("(?<=\\|\\d{1,20}),")) {
System.out.println(s);
}
以上打印
1,2,3|5
4,5|8
请注意,Java正则表达式有一个限制,即外观必须具有明显的上限。因此,您需要使用\\d{1,20}
代替更自然的\\d+
。
答案 2 :(得分:1)
你可以这样做:
split("(?<=\\|[0-9]),")
下面:
(?<=\\|[0-9])
?<=
表示积极的外观。\\|[0-9]
表示有一个|和,
之前的数字。,
与,
答案 3 :(得分:0)
如果你只需要输出,
final String[] p = x.split(",");
for (int i=0; i<p.length; i++) {
if (i>0 && p[i-1].contains("|"))
System.out.print("\n");
else
System.out.print(",");
System.out.print(p[i]);
}
//if (p.length>0)
System.out.print("\n");