java中正则表达式的问题 零宽断言的

String regx3="(?<=0x\\d+)|(?<=0X\\d+)";
String[] a= x.split(regx3);
结果报红字错
(?<=0x\d+)|(?<=0X\d+)
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.split(Unknown Source)
at java.lang.String.split(Unknown Source)
at Regex.analytical(two.java:12)
at two.main(two.java:53)
最新回答
软耳兔兔

2024-11-26 03:42:28

split方法虽然是用正则表达式实现的,但不能这么用。另外这个零宽断言有问题,我改了一下,不知道是不是你想要的。程序如下:

Pattern pattern = Pattern.compile("(?<=0x)\\d+|(?<=0X)\\d+");
Matcher matcher = pattern.matcher(x);
while (matcher.find()) {
System.err.println(matcher.group());
}
叆叇若紫

2024-11-26 04:48:02

正则中”?“代表重复0次或者1次,你表达式中第一个符号就是”?“是错误的,不知道是什么重复了0次或1次,所以报错。
追问
可是零宽度正回顾后发断言的愈发格式的确是这样啊.....