regex - 简单的 RegExp 匹配它不应该匹配的内容

标签 regex

我正在编写一个文本格式化程序,它需要从汉语拼音中清除特殊字符并将其替换为拉丁语对应物。但是我突然发现了这个问题 所以,假设我有这个音节

shu

我需要检查它是否包含以下列表中的一个字母:

üǖǘǚǚü̆ǜ

我有一个这样的正则表达式 [üǖǘǚǚü̆ǜ]{1}

它不应该匹配简单的“u”,但它匹配。

enter image description here

我该如何解决这个问题?

最佳答案

这些字素中的大多数由多个代码点组成,其中一个是字母“u”。 Unicode 感知正则表达式引擎中的字符类是一类代码点,而不是字素,因此该字符类将匹配其中包含的任何代码点,包括字母“u”。

据我所知,没有任何正则表达式引擎提供像“字形类”这样的东西,所以你唯一的选择是替代(即 ü|ǖ|ǘ|...)。

PS:{1} 是多余的。

关于regex - 简单的 RegExp 匹配它不应该匹配的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74223173/

相关文章:

java - 否定字符串替换的正则表达式

Javascript - 奇怪的正则表达式行为

javascript - 自定义电话号码正则表达式

c++ 如何从带有反斜杠的字符串中提取数字?

java - java中如何替换特定字符串?

java - 用于检测前面和后面的小写字母和数字的正则表达式

php - 在 RegEx (PCRE) 中的上一场比赛结束时继续

正则表达式从 <body>...</body> 中提取代码?

java - 正则表达式匹配Java中字符串的开头和结尾

javascript - 如何解析 bbcode 正则表达式?