我正在使用以下正则表达式:[a-zA-Z] +来检测字符串是否包含文本但在Java 1.7中失败。 它在Notepad ++中有效。 我错过了什么?
String message = "123 foo 567";
if (message.matches("[a-zA-Z]+")) {
System.out.println("Success");
} else
System.out.println("Fail");
"foo" --> Success
"123 foo" --> Fail
"foo 456" --> fail
答案 0 :(得分:2)
来自Matcher.matches()
上的Java API规范:
返回:
匹配时才为true
如果且仅当整个区域序列与此匹配器的模式
(重点是我的)。就好像你在Notepad ++中将你的表达式包装在^...$
中一样。
改为使用Matcher.find()
。
答案 1 :(得分:1)
获取String.matches的另一种方法是处理部分字符串而不是整个字符串,您可以在匹配字符串的开头和结尾添加。*以撤消^ ... $的效果,如:{{1 }}