1

这个例子工作正常:

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

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

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

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

4

2 回答 2

3

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

如果要匹配Я没有字母、数字或_紧接其前后的字符,可以使用:

(?<![\p{L}0-9_])Я(?![\p{L}0-9_])

您仍然必须使用u修饰符。

于 2010-08-29T14:37:15.003 回答
0

单词边界通常是违反直觉的

于 2010-11-18T13:53:10.067 回答