正则表达式测试字符串是否以数字结尾

Tho*_*hor 13 java regex

我想测试一个字符串是否以aa结尾.我希望以下Java行打印为true.为什么打印错误?

System.out.println("I end with a number 4".matches("\\d$"));
Run Code Online (Sandbox Code Playgroud)

Kas*_*ash 15

你的正则表达式不会匹配整个字符串,只会匹配最后一部分.尝试下面的代码,它应该工作正常,因为它匹配整个字符串.

System.out.println("I end with a number 4".matches("^.+?\\d$"));
Run Code Online (Sandbox Code Playgroud)

您可以对此进行测试,以便快速检查以下在线正则表达式测试人员:http: //www.regexplanet.com/simple/index.html.这也为您提供了应该在结果中使用适当转义的Java代码中使用的内容.

.+将确保有数字前ATLEAST一个字符.的将确保它做一个懒惰的比赛而不是贪婪的比赛.


Sea*_*oyd 9

在Java Regex中,Matcher.find()(在String中的任何地方找到匹配项)和Matcher.matches()(匹配整个String)之间存在差异.

String只有一个matches()方法(实现等效于此代码:) Pattern.compile(pattern).matcher(this).matches();,因此您需要创建一个匹配完整String的模式:

System.out.println("I end with a number 4".matches("^.*\\d$"));
Run Code Online (Sandbox Code Playgroud)

  • 完全匹配时@Thor和`$`都是完全可选的.它们没有任何效果,只是为了清晰起见 (2认同)