正则表达式整个单词[重复]

Posted

技术标签:

【中文标题】正则表达式整个单词[重复]【英文标题】:Regex whole word [duplicate] 【发布时间】:2011-11-19 12:44:09 【问题描述】:

我觉得问这个问题有点傻,但从我读过的所有内容来看,这应该有效,但对我来说却没有。我只是想使用正则表达式匹配字符串中的整个单词。

所以,如果我想在一个句子中找到单词“the”,它应该为“the quick brown fox jumps over the lazy dog”返回 true,但对于“there quick brown fox jumps over the lazy dog”返回 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”

而且它们总是返回 false。我觉得我在这里遗漏了一些非常明显的东西,因为这应该不会太难。 :)

【问题讨论】:

感谢您的回答,尽管我现在觉得自己更愚蠢了。 :) 【参考方案1】:

如果你使用matches,它必须匹配整个字符串。 String#contains(...) 可能是您要查找的内容,或者您​​可能想在单词前后添加一些通配符:

String regex = ".*\\bthe\\b.*";

例如,

  String text = "the quick brown fox jumps over the lazy dog";
  System.out.println(text.matches(regex));

【讨论】:

【参考方案2】:

你需要的是 matcher.find()

http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Matcher.html#find%28%29

【讨论】:

可能比我的答案更好:+1【参考方案3】:

试试这个正则表达式:

".*\\bthe\\b.*"

基本上,您尝试匹配的是字符串“the”,但即使输入有其他内容,您也需要返回匹配项,因此您需要在两侧放置“.*”。

【讨论】:

【参考方案4】:

嘘!第二句话自然会返回true,因为the这个词出现了两次:The quick brown fox jumps over the lazy dog"。你的第二句话还有第二个

您的正则表达式是正确的。但是,您需要使用 Pattern.find 方法而不是 matches,因为 matches 会尝试匹配整个字符串。另一方面,Pattern.find 将定位与您的模式匹配的子字符串。

【讨论】:

以上是关于正则表达式整个单词[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式快速入门

10 位或 6 位数字的正则表达式不应以“/”开头和结尾,也可以是字符串中的单个单词 [重复]

正则表达式。匹配整个单词

如何用正则表达式匹配整个单词?

正则表达式 (\S+?) 与 (\S+)) [重复]

正则表达式不包含某些单词[重复]