具有法语字符的NSRegularExpression

时间:2015-01-08 04:01:30

标签: regex nsregularexpression

为什么模式

[A-Z][A-z]*

使用NSRegularExpression为法语单词Ve返回Vénus。我想匹配骆驼字,但这个单词很奇怪

1 个答案:

答案 0 :(得分:2)

您的正则表达式匹配Ve而不是的原因是因为Unicode中的there are two ways to represent an é

  • 使用规范化的单个代码点U+00E9
  • 使用“已分解”表单:e,然后是组合标记´U+0065 U+0301)。请注意,后者实际的“独立”´字符(U+00B4)。

您的字符串显然是使用第二个选项编码的。因此[A-z]仅匹配组合字符的前半部分。由于以下´不匹配,此时正则表达式会停止。在应用正则表达式之前,应先对字符串进行规范化。

此外,请使用[A-Za-z]代替[A-z]。否则,某些非字母字符(例如^])也会匹配。