我想檢查一個字符串是否包含整個字,使用Java。下面是一些例子:Java正則表達式:匹配整個單詞與字邊界
Text : "A quick brown fox"
Words:
"qui" - false
"quick" - true
"quick brown" - true
"ox" - false
"A" - true
下面是我的代碼:
String pattern = "\\b(<word>)\\b";
String s = "ox";
String text = "A quick brown fox".toLowerCase();
System.out.println(Pattern.compile(pattern.replaceAll("<word>", s.toLowerCase())).matcher(text).find());
它正常工作與像我在上面的例子中提到的一個字符串。不過,我得到不正確的結果,如果輸入字符串具有字符,如%
,(
等,例如:
Text : "c14, 50%; something (in) bracket"
Words:
"c14, 50%;" : false
"(in) bracket" : false
它是與我的regex
模式(或者也許我做的整個模式匹配錯誤)。任何人都可以給我一個更好的方法。
使用'String pattern =「(?<!\\ w)」+ Pattern.quote(word)+「(?!\\ w)」;','\ b'是一個依賴於上下文的模式。 –
您需要在您的單詞列表中轉義正則表達式特殊字符。否則,告訴由引擎解釋。 –
@WiktorStribiżew謝謝,它似乎涵蓋了大部分情況,除了'c14,50%'和'c14,50'它應該返回'false'嗎? –