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

时间:2010-03-23 17:43:55

标签: c# regex unicode utf-8 internationalization

我正在为一本科学期刊建立一个CMS,它使用了很多希腊字符。我需要验证字段以包含特定字符集和希腊字符。这就是我现在所拥有的:

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

除了字母数字,'(',')',' - '和'_'之外,我如何才能包含希腊字符?

顺便说一句,我正在使用C#。

4 个答案:

答案 0 :(得分:5)

在.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

答案 1 :(得分:3)

如果您使用的语言使用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的本指南。

答案 2 :(得分:1)

对于Java,来自Pattern javadoc:

  

\ p {InGreek}希腊文中的一个角色   块(简单块)

答案 3 :(得分:1)

作为我在SO上的第一个回复,我无法在javascript正则表达式上回答Daniel的回答。

我知道这已经很晚了,但丹尼尔的答案是错误的。它排除了下面的古代人物!如果您正在研究一种研究古希腊语单词的圣经应用程序,这一点非常重要!

这是找到希腊语& amp;的正确正则表达式cos in js:

/[\u0370-\u03FF]+/gm 

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

摘自图表:

  

0370Ͱ希腊大写字母HETA       →2C75Ⱶ拉丁语大写字母半小时

     

0371ͱ希腊小写字母HETA       →2C76ⱶ拉丁小写字母半小时

     

0372Ͳ希腊大写字母ARCHAIC SAMPI

     

0373ͳ希腊小写字母ARCHAIC SAMPI

编辑:克雷格指出丹尼尔的正则表达式对于OP是正确的。虽然我无法找到OP在哪里指定他正在评估哪些希腊文,但我承认我的回答仅对古代文本有效。

虽然我正在编辑这篇文章,但我还要指出,这里没有正则表达式与希腊字符匹配,而Perseus在其文本中添加了这种重点。因此,如果您碰巧安装了http://www.perseus.tufts.edu/hopper/,或在应用中使用了他们的任何公共域资源,请小心我的正则表达式。