我有 2 个进行模式匹配的 java 程序,
程序 - 1
public class test {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d*");
Matcher m = p.matcher("ab34ef");
boolean b = false;
while (b = m.find()){
System.out.println(m.start());
System.out.println(m.group());
}
}
}
输出:
0
1
2
34
4
5
6
程序 - 2
public class test {
public static void main(String[] args) {
Pattern p = Pattern.compile("Dog");
Matcher m = p.matcher("This is a Dog and Dog name is Tommy");
boolean b = false;
while (b = m.find()){
System.out.println(m.start());
System.out.println(m.group());
}
}
}
输出-
10
Dog
18
Dog
有人可以解释正则表达式在这两种情况下是如何工作的。为什么在程序 1 中,匹配是从字节 0 开始的……而在程序 2 中,匹配是在整个字符串上匹配的?