php中非拉丁字符的单词边界

时间:2010-08-29 13:57:18

标签: php regex word-boundary non-latin

这个例子很好用:

echo preg_replace("/\bI\b/u", 'we', "I can"); // we can

即使我使用“你”修饰符,这个俄语字母也用不起作用:

echo preg_replace("/\bЯ\b/u", 'мы', 'Я могу'); // still "Я могу"

所以问题是我应该怎么做才能解决这个问题? 感谢。

2 个答案:

答案 0 :(得分:3)

在PCRE(preg_replace使用的库)中,\b仅指ASCII字义的字边界,即只有[a-zA-Z0-9_]是字符。

如果您希望匹配之前或之后没有字母,数字或Я的{​​{1}}字符,您可以使用:

_

您仍然必须使用(?<![\p{L}0-9_])Я(?![\p{L}0-9_]) 修饰符。

答案 1 :(得分:0)

字边界为often counter-intuitive