Почему я не могу сопоставить классы символов POSIX

следующий фрагмент печатает False:

Console.WriteLine(Regex.IsMatch("abc", @"[[:alpha:]]"));

но это выводит True:

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

Почему? Разве они не должны быть эквивалентны?

1 ответов


.NET Regexes не поддерживают классы символов Posix. Однако они поддерживают группы Unicode.

это будет работать:

Regex.IsMatch("abc", @"^\p{L}+$");

на \p{L} группа соответствует всем буквам Юникода.

см. здесь для получения дополнительной информации:

http://msdn.microsoft.com/en-us/library/20bw873z.aspx#CategoryOrBlock