.net 为什么可以';t I匹配POSIX字符类

.net 为什么可以';t I匹配POSIX字符类,.net,regex,posix,.net,Regex,Posix,以下代码段打印的是False: Console.WriteLine(Regex.IsMatch("abc", @"[[:alpha:]]")); 但这会打印出True: Console.WriteLine(Regex.IsMatch("abc", @"[a-zA-Z]")); 为什么??NET正则表达式不支持Posix字符类。但是,它们确实支持Unicode组 这将有助于: Regex.IsMatch(“abc”,“@”^\p{L}+$” \p{L}组匹配所有Unicode字母 有关更多信息

以下代码段打印的是
False

Console.WriteLine(Regex.IsMatch("abc", @"[[:alpha:]]"));
但这会打印出
True

Console.WriteLine(Regex.IsMatch("abc", @"[a-zA-Z]"));

为什么??NET正则表达式不支持Posix字符类。但是,它们确实支持Unicode组

这将有助于:

Regex.IsMatch(“abc”,“@”^\p{L}+$”

\p{L}
组匹配所有Unicode字母

有关更多信息,请参见此处:


您有任何理由相信.NET的正则表达式语言支持POSIX字符类吗?我想它只支持Unicode命名的类别/块。@Gabe-I支持,但这只是因为我读错了东西!另外,我在这里看到的一些标记为
.NET
的问题也通过POSIX字符类得到了回答。有关可接受的类别和块的列表,请参阅。不幸的是,Unicode category
L
并不对应于所有字母。这就是Unicode
PropList.txt
定义
其他字母属性的原因,该属性与
L
类别和
Nl
一起构成
DerivedCoreProperties.txt
中的
字母属性。应用程序几乎总是需要知道某个字符具有
字母属性,而不是category
L
。不幸的是,您不会注意到这一差异,直到您的一个用户(其语言使用非拉丁字母)在您的坏应用程序部署很久之后抱怨…:-(