在线工具 在线编程 在线白板 在线工具 在线编程 在线白板

Java:正则表达式,我的这个表达式为什么什么都没匹配到呢,输出为空

da12bka3434bdca4343bdca234bm
在a和b之间的数字,但是a之前的字符不能是c,b后面的字符必须是d可以,这里只有3434满足要求,但却输出为空

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Client {
public static void main(String[] args) {
Pattern p = Pattern.compile("(?<!c)a(//d+)bd ");
Matcher m = p.matcher("da12bka3434bdca4343bdca234bm");
while (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(0));
}
}
}
最新回答
槐序廿柒

2025-03-01 10:10:31

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
   public static void main(String[] args) {
      Pattern p = Pattern.compile("(?<!c)a(\\d+)bd");
      Matcher m = p.matcher("da12bka3434bdca4343bdca234bm");
      while (m.find()) {
         System.out.println(m.group(1));
         System.out.println(m.group(0));
      }
   }
}
3434
a3434bd

第一:转义符号用错了。

第二:正则最后多了个空格。

追问
您好:
group(0)="(?<!c)a(\\d+)bd"
group(1)="(\\d+)"
是这样吗?
追答
0代表整个匹配,1代表第一个括号,其中匹配位置的括号会忽略