Начнем с небольшого примера; У меня есть следующий текст:C# regexp для вложенных тегов
[[некоторый тег [[с тегом вложенного]] и снова]]
Я хотел бы, чтобы соответствовать [[с тегом вложенной]] но не [[какой-либо бирка [[с биркой гнездо]]. Простой
\[\[(?<content>.+?)\]\]
очевидно не работал. Так что я создал регулярное выражение:
\[\[(?!.*?\[\[.*?\]\].*?)(?<content>.+?)\]\]
К сожалению, он ничего не совпадает с использованием C# (с MatchOptions.SingleLine), в то время как preg_match PHP работает отлично.
Любые подсказки/идеи? Любая помощь приветствуется.
У меня нет проблем с запуском регулярного выражения в C# с помощью опции SingleLine. Он возвращает [[с тегом вложенные]] правильно. Можете ли вы разместить свой код? –
Я не уверен, что вижу проблему. Я создал 'System.Text.RegularExpressions.Regex', используя ваш второй шаблон и' RegexOptions.Singleline', а затем вызывается 'Match' в вашей строке примера. Он вернулся с одним захватом «[[с вложенным тегом]]». –
@Harry: Попробуйте с этим вводом: '[[outer1 [[inested1]] outer2 [[inested2]] outer3]]'. Если я правильно понял вопрос, он должен соответствовать «nested1» и «nested2», но он соответствует только «nested2». –