【发布时间】:2018-04-06 16:44:03
【问题描述】:
如何在 C# 中使用正则表达式搜索字符串,忽略重音符号;
例如在 Notepad++ 中,对于古希腊语,使用正则表达式搜索:[[=α=]] 将返回:α, ἀ ἁ, ᾶ, ὰ, ά, ᾳ, ....
我知道 Notepad++ 使用的是 PCRE 标准。 如何在 c# 中做到这一点?有等价语法吗?
编辑:
我已经尝试过字符串规范化。不适用于希腊语。例如:“ᾶ”.Normalize(NormalizationForm.FormC) 将返回 ᾶ。看起来规范化仅在“组合字符”的情况下删除重音。 ᾶ 字符是 Unicode 中的一个单独字符!
【问题讨论】:
-
@ctwheels 不匹配所有希腊字母,而不仅仅是“a”的变体?
-
.NET 正则表达式不支持 POSIX 排序规则。首先规范化字符串或使用
[αἀἁᾶὰάᾳ]之类的字符类 -
已经尝试过标准化。请参阅已编辑的问题。看起来字符类是唯一的解决方案。会高效吗?仅对于字母 -α- 类将是 [ἀἁἂἃἄἅἆἇὰάᾀᾁᾂᾃᾄᾅᾆᾇᾰᾱᾲᾳᾴᾶᾷ]。搜索一个词会产生一个非常大的正则表达式。
-
@你试过normalization like this吗?因为当我在
ᾶ上运行它时,我得到α。