Почему я не могу сопоставить классы символов POSIX - PullRequest
6 голосов
/ 10 марта 2012

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

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

Но это печатает True:

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

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

1 Ответ

9 голосов
/ 10 марта 2012

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

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

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

Группа \p{L} соответствует всем буквам Unicode.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...