请注意,.NET 使用 \p{IsGreek} 表示 \p{Block:Greek_and_Coptic},not 表示 \p{Script=Greek},这是您真正需要的。这是具有欺骗性的,因为它让您认为 .NET 可以处理脚本类型,但实际上不能。
除了 Perl 和 PCRE 之外,很少有正则表达式引擎能够理解脚本的 Unicode 属性,例如 \p{IsGreek} 或简单的 \p{Greek}。 Javascript 和 .NET 不在处理脚本的范围内。 Java 会理解 JDK7 来的脚本属性,但还没有;不过,您可以在 Java 中使用 ICU。
This page 表示 .NET 处理 \p{InBlock} 属性。所以你可以像这样构造一个字符类:
[\p{InGreek}\p{InGreekAndCoptic}\p{InGreekExtended}\p{InAncientGreekMusicalNotation}]
但是,这仍然会遗漏这些代码点,这些代码点都被认为是希腊文:
ᴦ 7462 1D26 GREEK LETTER SMALL CAPITAL GAMMA
ᴧ 7463 1D27 GREEK LETTER SMALL CAPITAL LAMDA
ᴨ 7464 1D28 GREEK LETTER SMALL CAPITAL PI
ᴩ 7465 1D29 GREEK LETTER SMALL CAPITAL RHO
ᴪ 7466 1D2A GREEK LETTER SMALL CAPITAL PSI
ᵝ 7517 1D5D MODIFIER LETTER SMALL BETA
ᵞ 7518 1D5E MODIFIER LETTER SMALL GREEK GAMMA
ᵟ 7519 1D5F MODIFIER LETTER SMALL DELTA
ᵠ 7520 1D60 MODIFIER LETTER SMALL GREEK PHI
ᵡ 7521 1D61 MODIFIER LETTER SMALL CHI
ᵦ 7526 1D66 GREEK SUBSCRIPT SMALL LETTER BETA
ᵧ 7527 1D67 GREEK SUBSCRIPT SMALL LETTER GAMMA
ᵨ 7528 1D68 GREEK SUBSCRIPT SMALL LETTER RHO
ᵩ 7529 1D69 GREEK SUBSCRIPT SMALL LETTER PHI
ᵪ 7530 1D6A GREEK SUBSCRIPT SMALL LETTER CHI
ᶿ 7615 1DBF MODIFIER LETTER SMALL THETA
Ω 8486 2126 OHM SIGN
除了上面列出的误报之外,上面给出的四个希腊语块中的任何一个的括号字符类也会产生这些误报:
ʹ 884 0374 GREEK NUMERAL SIGN
; 894 037E GREEK QUESTION MARK
΅ 901 0385 GREEK DIALYTIKA TONOS
· 903 0387 GREEK ANO TELEIA
Ϣ 994 03E2 COPTIC CAPITAL LETTER SHEI
ϣ 995 03E3 COPTIC SMALL LETTER SHEI
Ϥ 996 03E4 COPTIC CAPITAL LETTER FEI
ϥ 997 03E5 COPTIC SMALL LETTER FEI
Ϧ 998 03E6 COPTIC CAPITAL LETTER KHEI
ϧ 999 03E7 COPTIC SMALL LETTER KHEI
Ϩ 1000 03E8 COPTIC CAPITAL LETTER HORI
ϩ 1001 03E9 COPTIC SMALL LETTER HORI
Ϫ 1002 03EA COPTIC CAPITAL LETTER GANGIA
ϫ 1003 03EB COPTIC SMALL LETTER GANGIA
Ϭ 1004 03EC COPTIC CAPITAL LETTER SHIMA
ϭ 1005 03ED COPTIC SMALL LETTER SHIMA
Ϯ 1006 03EE COPTIC CAPITAL LETTER DEI
ϯ 1007 03EF COPTIC SMALL LETTER DEI
这就是为什么仅仅列出块是不够的:你真的确实需要一个合适的\p{Script=Greek} 或\p{IsGreek} 属性。不幸的是,目前您必须更改编程语言才能获得它,我敢肯定这是不可能的。