我想测试一个字符串是否以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一个字符.的?将确保它做一个懒惰的比赛而不是贪婪的比赛.
在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)
| 归档时间: |
|
| 查看次数: |
55404 次 |
| 最近记录: |