在#34; wariant"之前没有字母。在正则表达式

时间:2014-04-05 10:56:35

标签: java regex

我想定义正则表达式来检测文本中的单词wariant。问题是我在单词wariant之前或之后都没有字母。

我做到了:

Pattern wariantPattern = Pattern.compile("[\\w]{0}wariant[\\w]{0}");

但遗憾的是:subwariant也与之匹配。

2 个答案:

答案 0 :(得分:3)

您可以使用单词anchor \b

Pattern wariantPattern = Pattern.compile("\\bwariant\\b");

与所有锚一样,它将匹配输入文本中的位置(即,它不会消耗文本),其中一个是真的:

  1. 前一个字符不是单词字符,下一个字符是;或
  2. 前一个字符是单词字符,下一个字符不是;或
  3. 这是输入文本的开头,第一个字符是单词字符;或
  4. 这是输入文本的结尾,最后一个字符是单词字符。
  5. 某些正则表达式引擎具有更专业的锚点({1}用于条件1和3,\<用于条件2和4),但不包括Java。

答案 1 :(得分:2)

您可以使用字边界\b

Pattern wariantPattern = Pattern.compile("\\bwariant\\b");