时间:2010-07-23 16:08:03

标签: java regex unicode word-boundary dollar-sign

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

Tomalak钉它 - 它是关于字边界匹配。我已经弄明白了并删除了这个问题,但威尔建议保持开放给其他人是合理的。

\b实际上是罪魁祸首。

一个结论可能是除了最基本的(即ASCII)之外的任何东西,来自Java的内置便利表达式实际上是无用的。例如。 \w仅匹配ASCII字符,\b基于该字符,等等。

FWIW,我的RegExp结束了:

   (?:^|[\p{P}\p{Z}])(\QThe $earch Term\E)(?:[\p{P}\p{Z}]|$)

其中The $earch Term是我要匹配的文字。

\p{}是Unicode类别。基本上,我打破了标点符号(P)或分隔符(Z)Unicode字符类别中的任何字符。同样,输入的开始和结束都是受到尊重的(使用^$),并且边界标记在实际搜索时被标记为非捕获组((?:...)位)术语引用\Q\E&放在匹配的组中。