4

我需要一些关于正则表达式的帮助:我正在尝试检查一个句子是否包含特定的单词。

让我们以这个主题的标题为例:

“正则表达式在字符串中查找特定单词”

我需要查找它是否包含单词if,在这种情况下它是错误的。

我不能使用方法 contains 因为在这种情况下它会返回 true (spec* if *ic)

我正在考虑使用方法匹配,但我对正则表达式有点菜鸟。

基本上,匹配方法的输入中的正则表达式需要指定我正在查找的单词之前和单词之后的字符不是字母(因此它不能包含在该单词中)或者该单词位于句首或句尾

多谢!

4

3 回答 3

16

使用以下正则表达式:

".*\\bif\\b.*"

\b匹配单词边界。

于 2013-08-17T14:39:13.713 回答
8

良好的正则表达式知识可以解决您的任务

在你的情况下

String str = "Regex to find a specific word in a string in java"
        str.matches(".*?\\bif\\b.*?");  \\ return false
String str1 = "print a word if you found"
        str1.matches(".*?\\bif\\b.*?");  \\ return true

一个简短的解释:

. 匹配任何字符,

*? 是零次或多次,

\b 是单词边界。

可以在这里找到正则表达式的一个很好的解释

于 2013-08-17T14:59:59.977 回答
2

使用它来匹配字符串中的特定单词:

   String str="Regex to find a specific word in a string";
   System.out.println(str.matches(".*\\bif\\b.*"));   //false 
   System.out.println(str.matches(".*\\bto\\b.*"));   //true

于 2013-08-17T14:45:03.143 回答