我有一个字符串a="-4--5-6"
当我执行a.split("-")
时,结果是{4,5,6}但我想要{4,-5,6}
。要获得答案的正则表达式是什么?
答案 0 :(得分:1)
使用正向后向查找在数字后的-
:
a.split("(?<=\\d)-");
(?<=u)
是正向后看,其中u
代表要查找的字符,\\d
代表任何数字字符。这会寻找跟随数字的-
,但不会在捕获的字符中包含该数字,因此拆分不会删除该数字,而只是删除-
字符。
例如
import java.util.Arrays;
public class Foo {
public static void main(String[]args) {
String a = "-4--5-6";
System.out.println(a);
String[] b = a.split("(?<=\\d)-");
System.out.println(Arrays.toString(b));
}
}
请注意,这将返回
[-4, -5, 6]
由于前4个字符前面带有负号
有关更多信息,请查看this regular expressions tutorial
对于您的示例,其中String为:
String a = "1-2--3-4";
这将返回:
[1, 2, -3, 4]
您真正想要的是什么
public static void main(String[]args) {
String a = "1-2--3-4";
System.out.println(a);
String[] b = a.split("(?<=\\d)-");
System.out.println(Arrays.toString(b));
}