2012-08-02 118 views
0

有輕微的正則表達式問題。我寫了下面的代碼來檢查一個字是否包含在一個字符串中。Java正則表達式不起作用

boolean matches = Pattern.matches("\\b" + Pattern.quote(item.name) + "\\b", nap.code); 

item.name將會像 「半壁江山」 nap.code將會像 「INT halfOfFour(){迴流半部(4);}」

然而,我的模式匹配返回false ...我在這裏做錯了什麼?

另外...有沒有反正,如果這個單詞包含在一個字符串中,這個返回假?

回答

3

我認爲,模式匹配將匹配整個字符串不只是它的一部分。所以前綴。*和後綴與。*什麼的。

使用模式匹配和分別,然後使用「查找()」中的匹配找到子匹配

+0

當然,我假設你不想使用字符串包含或indexOf/lastIndexOf – 2012-08-02 09:24:49

+0

'System.out.println(「int halfOfFour(){return half(4);}」。 match(「。* \\ bhalf \\ b。*」));' - > true – 2012-08-02 09:27:26

+0

「testfunc passing(){ int halfOfFour = half(4); assert(halfOfFour == 2,」The laws of (「。* \\ b」+ Pattern.quote(「half」)+「\\ b。*」); 仍然導致錯誤... – 2012-08-02 10:22:06

1

難道Java.lang.String.contains()方法做你想要的嗎?

boolean contains = nap.code.contains(item.name); 

編輯:只有當詞存在返回true,使用\ W模式(非單詞字符),應該可以幫助您:

\W*(YOUR_WORD)\W* 
+0

不,他要檢查是否完整** **字是的字符串中。 '佳能'包含'非',但它不是一個字。 'CaNon'包含單詞non。 – 2012-08-02 09:25:31

+0

在他的例子中(half/halfOfHour),他說盡管'half'不是一個完整的單詞,它仍然會返回true。所以我認爲你誤解了。 – kgautron 2012-08-02 09:27:53

+0

是的,但我認爲他確實在尋找一種檢查單詞的方法。大寫字母表示單詞的開頭。 – 2012-08-02 09:29:09