为什么要使用模式
[A-Z][A-z]*
使用 NSRegularExpression 返回法语单词 Vénus
的 Ve
。我想匹配 Camel 单词,但这个单词很奇怪
最佳答案
您的正则表达式匹配 Ve
而不是 Vé
的原因是 there are two ways to represent an é
在统一码中:
- 使用规范化的单个代码点
U+00E9
或 - 使用“分解”形式:
e
,后跟组合标记´
(U+0065 U+0301
)。请注意,后者不是实际的“独立”´
字符 (U+00B4
)。
您的字符串显然是使用第二个选项进行编码的。因此 [A-z]
仅匹配组合字符的前半部分。由于以下 ´
不匹配,因此正则表达式在此时停止。您应该先规范化字符串,然后再对其应用正则表达式。
此外,请使用[A-Za-z]
而不是[A-z]
。否则,一些非字母字符如 ^
或 ]
也会被匹配。
关于regex - 带有法语字符的 NSRegularExpression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27832708/