我正在使用Java正则表达式匹配“dept”。在字符串“dept.no.2”中,并且不使用以下正则表达式“\ b(dept \。)\ b”取回任何匹配项。
我的理解是\ b会匹配空格,因为它们不是单词字符,但它似乎没有这样做。当我将\ s *添加到正则表达式时,如下面的“\ b(dept \。)\ s * \ b”我得到一个成功的匹配。
我阅读原始正则表达式的方式是匹配部门。 (在文字句点之间)在单词边界之间。这不正确吗?
我在这里做什么/失踪是什么蠢事?
答案 0 :(得分:3)
\b
符合以下内容:(^\w|\w\W|\W\w|\w$)
。
换句话说,非单词字符旁边的单词字符([a-zA-Z0-9_]
)(或字符串的开头/结尾)。您目前正在尝试使用\.\b
来匹配“。”;句点将匹配,但后面没有单词边界(因为它是两个非单词字符)。
这就是为什么你可以添加\s*
并且它会起作用的原因,因为现在单词边界将匹配“n”之间的空格。我建议你只使用表达式\b(dept\.)
,因为\.
几乎与你的方案中的\b
同义(t
一个单词字符,后跟\.
a非单词字符)。