我正在编写一个文本格式化程序,它需要从汉语拼音中清除特殊字符并将其替换为拉丁语对应物。但是我突然发现了这个问题 所以,假设我有这个音节
shu
我需要检查它是否包含以下列表中的一个字母:
üǖǘǚǚü̆ǜ
我有一个这样的正则表达式
[üǖǘǚǚü̆ǜ]{1}
它不应该匹配简单的“u”,但它匹配。
我该如何解决这个问题?
最佳答案
这些字素中的大多数由多个代码点组成,其中一个是字母“u”。 Unicode 感知正则表达式引擎中的字符类是一类代码点,而不是字素,因此该字符类将匹配其中包含的任何代码点,包括字母“u”。
据我所知,没有任何正则表达式引擎提供像“字形类”这样的东西,所以你唯一的选择是替代(即 ü|ǖ|ǘ|...
)。
PS:{1}
是多余的。
关于regex - 简单的 RegExp 匹配它不应该匹配的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74223173/