正则表达式模式匹配java
我有两个java程序进行模式匹配 方案-1正则表达式模式匹配java,java,regex,Java,Regex,我有两个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
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
有人能解释一下正则表达式在这两种情况下是如何工作的吗。。为什么在program-1中,匹配从字节0开始,然后在那里开始…而在program-2中,匹配在整个字符串上进行匹配?
\\d*
表示包含0个或更多数字的字符串
您将获得0个长(空)数字字符串的结果
您可能应该尝试\\d+
查找长度至少为1的数字字符串
推荐阅读
\\d*
中的*
使数字可选。也就是说,该模式匹配每个字节。当数字出现时,它也会特别匹配这些数字,但不一定要匹配
Dog
不是模式的可选部分,需要匹配