为什么模式
[A-Z][A-z]*
使用NSRegularExpression为法语单词Ve
返回Vénus
。我想匹配骆驼字,但这个单词很奇怪
答案 0 :(得分:2)
您的正则表达式匹配Ve
而不是Vé
的原因是因为Unicode中的there are two ways to represent an é
:
U+00E9
或e
,然后是组合标记´
(U+0065 U+0301
)。请注意,后者不实际的“独立”´
字符(U+00B4
)。您的字符串显然是使用第二个选项编码的。因此[A-z]
仅匹配组合字符的前半部分。由于以下´
不匹配,此时正则表达式会停止。在应用正则表达式之前,应先对字符串进行规范化。
此外,请使用[A-Za-z]
代替[A-z]
。否则,某些非字母字符(例如^
或]
)也会匹配。