我正在研究一个可以匹配前导数字的正则表达式。在一个字符串中。但它似乎无法正常工作。我正在使用的正则表达式是
"^[\\.\\d]+"
以下是我的代码:
public void testMiscellaneous() throws Exception {
System.out.println("~~~~~~~~~~~~~~~~~~~testMiscellaneous~~~~~~~~~~~~~~~~~~~~");
String s1 = ".123 *[DP7_Dog]";
String s2 = ".123";
String s3 = "1.12.3";
String s4 = "a1.12.3";
final String numberRegex = "^[\\.\\d]+";
System.out.println(s1.matches(numberRegex));
System.out.println(s2.matches(numberRegex));
System.out.println(s3.matches(numberRegex));
System.out.println(s4.matches(numberRegex));
}
输出
false
true
true
false
但是,我希望真实,真实,真实,虚假。正则表达式一定有问题,但我找不到它。有人可以帮忙吗?感谢。
答案 0 :(得分:2)
问题在于matches()
坚持要匹配整个输入字符串,就好像正则表达式的开头是^
,最后是$
。
您可能最好使用Matcher.find()
或Matcher.lookingAt()
,或者(如果您想像我一样愚蠢和懒惰)只需在模式结尾处添加.*
。