【问题标题】:"Lenient" regex matching of similar characters in C#/.NetC#/.Net 中相似字符的“宽松”正则表达式匹配
【发布时间】:2010-07-02 15:46:19
【问题描述】:

有没有办法让 .Net 积极匹配字符串,即使某些字符不完全相同?应该被视为相似的字符示例可能是:'a'/'á' 和 'í'/'i'。 Chrome 浏览器 find-as-you-type 将这些字符识别为等价的。

【问题讨论】:

    标签: .net regex unicode


    【解决方案1】:

    看看 Michael Kaplan 的 this blog post。此处的代码使用标准的 .NET 类库方法来实现

    1. 规范化 Unicode 字符串,在这种情况下,使用“复合”规范化形式确保像 á 这样的字符由 a 及其变音符号的单独代码点表示(s);
    2. 使用公开 Unicode 字符信息数据库的类识别变音符号,并将它们剥离。

    【讨论】:

      【解决方案2】:

      如果您自己写出算法,当然可以。唯一接近你所说的 OOB Regex.Match() 重载的事情是在 RegexOptions 中,CultureInvariant. 但是,除非你正在翻转文化,否则这将没有任何用处。

      【讨论】:

        【解决方案3】:

        也许您想研究Soundex/Metaphone 函数,首先规范化字符串,然后对结果执行正则表达式操作?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-07-21
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多