带重音的正则表达式单词

时间:2013-03-27 12:54:13

标签: php regex

我有这个正则表达式

\b(t[úu]s*)\b

我有这样的话:

tu (works)
tú (doesn't work)
tus (works)
tús (works)

为什么我不能匹配

2 个答案:

答案 0 :(得分:3)

如果正则表达式不匹配,则两个字符不同。

“u with acute”可以表示为单个字符ú(U + 00FA)或将u(U + 0075)与组合急性重音组合字符(U + 0301)给出类似的ú

您必须转换输入字符串或在正则表达式中包含两个变体,有关详细信息,请参阅http://www.regular-expressions.info/unicode.html

答案 1 :(得分:2)

  

为什么表达式不匹配

该表达式与不匹配,因为\b似乎无法将ú识别为单词字符,因此在非单词字符之间使用时会失败

你可以使用这样的东西:

/(?<!\p{L})(t[úu]s*)(?!\p{L})/u

\p{L}匹配unicode字母。