我觉得这个问题有点傻,但是从我读过的所有内容来看,这应该有效,但对我来说却没有。我只是想用正则表达式匹配字符串中的整个单词。
所以,如果我试图在一个句子中找到“the”这个词,它应该在“快速的棕色狐狸跳过懒狗”时返回true,但是返回false,因为“快速的棕色狐狸跳过了懒狗“。
我试过这个:
String text = "the quick brown fox jumps over the lazy dog";
return text.matches("\\bthe\\b");
我也试过了:
String text = "the quick brown fox jumps over the lazy dog";
String regex = "\\bthe\\b";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
return matcher.matches();
我也试过这个正则表达式:“\ bthe \ b”
他们总是回归虚假。我觉得我错过了一些非常明显的东西,因为这不应该太难。 :)
答案 0 :(得分:6)
如果使用matches
,则必须匹配整个字符串。 String#contains(...)
可能是你正在寻找的,或者你想在你的词之前和之后放一些外卡:
String regex = ".*\\bthe\\b.*";
如,
String text = "the quick brown fox jumps over the lazy dog";
System.out.println(text.matches(regex));
答案 1 :(得分:6)
您需要的是matcher.find()
http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Matcher.html#find%28%29
答案 2 :(得分:2)
试试这个正则表达式:
".*\\bthe\\b.*"
基本上,你想要匹配它的是字符串“the”,但是你需要返回一个匹配,即使输入有其他东西,所以你需要在两边放置“。*”。
答案 3 :(得分:0)
Bzzt!第二句自然会返回true
,因为单词the
会出现两次: 快速棕色狐狸跳过 懒狗“你的第二句仍有第二句 。
你的正则表达式是正确的。但是,您需要使用Pattern.find
方法而不是matches
,因为matches
会尝试匹配整个字符串。另一方面,Pattern.find
将找到与您的模式匹配的子串。