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

4
为什么字母é在以下示例中被视为匹配\b的单词边界?
模式:/\b(cum)\b/i 文本:écumé 匹配了不需要的'cum'。
有没有可能解决这个问题?
2个回答

11

当你在正则表达式中添加u修饰符时,它将生效。

/\b(cum)\b/iu

谢谢!我太傻了,应该更深入地研究修饰符。 - marekful
添加Unicode修饰符使正则表达式将输入字符串视为Unicode。PS:被低估的问题和解决方案。 - JayKandari

0

为了处理Unicode,请将\b替换为

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

1
谢谢,但似乎太复杂了。stema的答案更直接地解决了问题,因为问题在于文本具有Unicode字符,但模式没有意识到这一点。 - marekful

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接