正则表达式-PCRE(PHP)-单词边界(\b)和重音字符

正则表达式-PCRE(PHP)-单词边界(\b)和重音字符,php,regex,utf-8,pcre,non-ascii-characters,Php,Regex,Utf 8,Pcre,Non Ascii Characters,在下面的示例中,为什么字母é算作单词边界匹配\b 模式:/\b(cum)\b/i 正文:e cumé 匹配不需要的“cum” 有可能克服这个问题吗?当您将u修饰符添加到正则表达式中时,它会起作用 /\b(cum)\b/iu 要处理unicode,请将\b替换为 /(?<=^|\PL)(cum)(?=\PL|$)/i /(?谢谢!愚蠢的我,应该更深入地研究修饰符。添加Unicode修饰符会使正则表达式将输入字符串视为Unicode。PS:低估了问题和解决方案。谢谢,但它似乎太复杂了。st

在下面的示例中,为什么字母
é
算作单词边界匹配
\b

模式:
/\b(cum)\b/i

正文:
e cumé

匹配不需要的“cum”


有可能克服这个问题吗?

当您将
u
修饰符添加到正则表达式中时,它会起作用

/\b(cum)\b/iu

要处理unicode,请将
\b
替换为

/(?<=^|\PL)(cum)(?=\PL|$)/i

/(?谢谢!愚蠢的我,应该更深入地研究修饰符。添加Unicode修饰符会使正则表达式将输入字符串视为Unicode。PS:低估了问题和解决方案。谢谢,但它似乎太复杂了。stema的回答更直截了当地解决了这个问题,因为问题是文本具有Unicode字符,但没有生成模式意识到这一点。