Почему я не могу сопоставить классы символов 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