Советы по рефакторингу вычитания класса символов регулярного выражения - PullRequest
3 голосов
/ 04 февраля 2012

Реализация Regex в Mono имеет ошибку, которая означает, что она неправильно обрабатывает вычитание класса символов regex.

IE: "[ab- [a]]" должен фактически быть набором символов "[b]".

Например, следующий код в .NET выведет «\ ncat \ nsat \ non \ nthe \ nmat».
Этот пример содержит упрощенное регулярное выражение, которое я пытаюсь заставить работать в моно.

string listOfUnicodeChars = "\u2e80";  
string patten =  
"[\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lo}‌‍\\p{Mn}\\p{Mc}\\p{Lm}-[" + listofUnicodeChars +"]]+";

Regex regex = new Regex(pattern);
foreach (var match in regex.Matches("The cat sat on the mat."))
   Console.WriteLine(match);

, но при использовании mono регулярное выражение ничего не соответствует.

У кого-нибудь есть какие-либо предложения о том, как получить тот же эффект с помощью регулярного выражения, написанного по-другому?

1 Ответ

4 голосов
/ 04 февраля 2012

Рассматривали ли вы использование негативного взгляда ? Такие как:

"(?![" + listOfUnicodeChars + "])[\\p{Lu}" + ... + "]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...