Преобразование расширенного регулярного выражения в .NET-совместимый RegEx - PullRequest
1 голос
/ 29 августа 2009

У меня есть RegEx, который отлично работает на * системах NIX и языках, которые поддерживают расширенные регулярные выражения (ERE). Я не нашел свободно доступную библиотеку для .NET, которая поддерживает ERE, и мне не посчастливилось попытаться перевести это в не-ERE и получить тот же результат. Вот RegEx:

^\+(<{7} \.|={7}$|>{7} \.)

Справочная информация: задача RegEx - определить, есть ли в данной строке маркеры из неразрешенного слияния subversion.

Ответы [ 2 ]

4 голосов
/ 29 августа 2009

Мне кажется что синтаксис ERE в основном совместим с версией regex .NET, как и с большинством других "совместимых с Perl" разновидностей (Perl, PHP, Python, JavaScript, Ruby, Джава...). Другими словами, все, что вы можете делать в регулярном выражении ERE, вы должны делать в идентичном регулярном выражении .NET. Конечно ваш пример:

^\+(<{7} \.|={7}$|>{7} \.)

означает то же самое в .NET, что и в ERE. Единственное серьезное исключение, которое я вижу, это область скобок POSIX ; Вместо этого .NET следует стандарту Unicode.

Это когда вы переходите к применять регулярное выражение, вещи действительно становятся другими. В C # вы можете применить это регулярное выражение так:

string result = Regex.Match(targetString, @"^\+(<{7} \.|={7}$|>{7} \.)").Value;

C # дословные строки избавят вас от необходимости избегать обратной косой черты, как в строковых литералах некоторых других языков; вам нужно только избежать кавычек, которые вы удваиваете их:

@"He said, ""Look out!""";

Это отвечает на ваш вопрос?

0 голосов
/ 29 августа 2009

Вы уверены, что в этом нет опечатки? RegexBuddy (при установке на POSIX ERE или GNU ERE) говорит, что перед квантификатором "+" должен стоять токен, который может повторяться. Кроме этого, это, кажется, действительный .NET Regex. Возможно, вы захотите проверить одну из замечательных книг О'Рейли о регулярных выражениях. Если это не поможет, опубликуйте несколько примеров текста, который вы пытаетесь сопоставить / не сопоставить.

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