代码之家  ›  专栏  ›  技术社区  ›  craigmoliver

希腊字符、正则表达式和C#

  •  7
  • craigmoliver  · 技术社区  · 14 年前

    我正在为一本科学杂志建立一个CMS系统,它使用了很多希腊字符。我需要验证包含特定字符集和希腊字符的字段。我现在有:

    [^a-zA-Z0-9-()/\s]
    

    除了字母数字、“(”、“)”、“-”和“u”之外,如何使其包含希腊字符?

    顺便说一下,我用的是C。

    4 回复  |  直到 14 年前
        1
  •  5
  •   Tim Pietzcker    14 年前

    在.NET语言中,您可以使用 \p{IsGreekandCoptic} 匹配希腊字符。所以得到的正则表达式是

    [^a-zA-Z0-9-()/\s\p{IsGreekandCoptic}]
    

    \ p{isgreekandcoptic} 比赛:

    These characters will be matched by \p{IsGreekandCoptic} http://img203.imageshack.us/img203/3760/greekcoptic.png

        2
  •  3
  •   Daniel Vandersluis    14 年前

    如果您使用的语言使用pcre作为正则表达式和utf-8, /[\x{0374}-\x{03FF}]+/u 应该匹配希腊字符。希腊字符介于u+0374和u+03ff之间( source ) u 修饰符告诉pcre使用unicode。如下所述, /\p{Greek}+/u 与PCRE一起工作。

    如果您使用javascript,它使用 \uXXXX 而不是 \x{XXXX} : /[\u0374-\u03FF]+/ .

    另请参见本指南 Unicode Regular Expressions 更多信息。

        3
  •  1
  •   bmargulies    14 年前

    对于Java,从模式库:

    \希腊语中的一个字符 块(简单块)

        4
  •  0
  •   jmbartho    8 年前

    作为我对此的第一个回应,我不能轻视daniel在javascript regex上的回答。

    我知道这已经很晚了,但丹尼尔的回答是不正确的。它排除了下面的古文字!如果你正在开发一个研究古希腊语单词的圣经应用程序,这一点很重要!

    这是在js中查找希腊语和科普特语的正确regex:

    /[\u0370-\u03FF]+/gm 
    

    http://unicode.org/charts/PDF/U0370.pdf

    摘自图表:

    0370°希腊文大写字母Heta 拉丁文大写字母半H

    0371±希腊文小写字母Heta 拉丁文小写字母半H

    0372希腊文大写字母仿古Sampi

    0373希腊文小写字母仿古Sampi

    编辑:克雷格指出丹尼尔的regex对于op是正确的。虽然我找不到op在哪里指定他正在评估哪个希腊文本,但我承认我的回答只对古代文本有效。

    在我编辑这篇文章的时候,我还想指出,这里没有一个正则表达式能匹配希腊字符和珀尔修斯在文本中添加的重音。所以如果你碰巧安装了 http://www.perseus.tufts.edu/hopper/ ,或者在应用程序中使用它们的任何公共域资源,请小心使用我的regex。