2014-04-05 56 views
0

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

我已经做到了:

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

但不幸的是两个字:subwariant也与它匹配。

+3

使用单词锚('\ b') - 当然,在Java字符串中加上反斜杠 – fge

+1

@fge让这个答案,我会upvote它。 –

回答

2

您可以使用单词边界\b

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

你可以用这个词锚\b

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

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

  1. 上一个字符不是单词字符,下一个字符是;或
  2. 上一个字符是单词字符,下一个字符不是;或
  3. 这是输入文本的开始,第一个字符是单词字符;或
  4. 这是输入文本的结尾,最后一个字符是单词字符。

一些正则表达式引擎有更专业的锚(\<为条件1和3,\>为条件2和4),而不是Java。

相关问题