我想检查一个字符串是否包含整个字,使用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'吗? –