单词边界的准确解释是:一端必须出现\w能匹配的字符,另一端不出现\w能匹配的字符。在JavaScript、PHP、Python 2、Ruby中,\w只能匹配[0-9a-z-A-Z_]。所以在这些语言中,\b\w+\b能用来匹配几乎所有的英文单词。

正则表达式——7.4 单词边界
正则表达式——7.4 单词边界
正则表达式——7.4 单词边界

字符串 正则表达式 能否匹配 说明
tom,jerry(半角标点) \btom\b \w不能匹配半角标点
tom,jerry(全角标点) \btom\b \w可以匹配全角标点
tom和jerry \b和\b \w可以匹配中文字符
汤姆,jerry(半角标点) \btom\b \w不能匹配半角标点
汤姆,jerry(全角标点) \btom\b \w可以匹配全角标点

  总的来说,如果使用 Unicode 匹配规则,尽量不要在处理中英文混排文本时使用\b。如果使用 ASCII 匹配规则,则可以再处理英文文本时放心地使用\b

  也有更复杂的情况,比如 Java 就是如此。在 Java 中,虽然\w只能匹配[0-9a-zA-Z_]\b对“单词字符”的判断确实按照 Unicode 匹配规则的。后面有详情

相关文章: