【发布时间】:2010-05-11 06:27:56
【问题描述】:
以下代码有效:
String str= "test with foo hoo";
Pattern pattern = Pattern.compile("foo");
Matcher matcher = pattern.matcher(str);
if(matcher.find()) { ... }
但是这个例子没有:
if(Pattern.matches("foo", str)) { ... }
这个版本也没有:
if(str.matches("foo")) { ... }
在实际代码中,如果匹配器对 str 的处理方式不同,str 是多行的文本块,同样在实际代码中,replace 将用于替换一串文本。
无论如何,奇怪的是它在第一个版本中有效,而在其他两个版本中无效。
编辑
好的,我意识到如果使用if(matcher.matches()) { ... } 而不是matcher.find,第一个示例中的行为是相同的。我仍然无法使其适用于多行输入,但我还是坚持使用Pattern.compile/Pattern.matcher 解决方案。
【问题讨论】: