如何使用正则表达式检测Java中的可读文本?

时间:2014-02-23 23:25:57

标签: java regex

我正在使用以下正则表达式:[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

2 个答案:

答案 0 :(得分:2)

来自Matcher.matches()上的Java API规范:

  

返回:
      如果且仅当整个区域序列与此匹配器的模式

匹配时才为true

(重点是我的)。就好像你在Notepad ++中将你的表达式包装在^...$中一样。

改为使用Matcher.find()

答案 1 :(得分:1)

获取String.matches的另一种方法是处理部分字符串而不是整个字符串,您可以在匹配字符串的开头和结尾添加。*以撤消^ ... $的效果,如:{{1 }}