2014-04-05 95 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。

相關問題