Пропуск конца результата, найденного из регулярного выражения - PullRequest
1 голос
/ 17 февраля 2010

У меня есть это регулярное выражение в c #:

Regex oRegex_ = new Regex("<!-- #BeginEditable \"Body\"[^>]*>(.*)<!-- #EndEditable [^>]*>", RegexOptions.Multiline);
MatchCollection matches_ = oRegex_.Matches(contents);

Переменная «содержимое» равна этому:

<!-- #BeginEditable "Body" -->First String<!-- #EndEditable --><!-- #BeginEditable "Extra" -->Second String<!-- #EndEditable -->

В настоящее время, кажется, не хватает того, что мне нужно, то есть

'First String'

Вместо этого хватает

'First String<!-- #EndEditable --><!-- #BeginEditable "Extra" -->Second String<!-- #EndEditable -->'

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

Обратите внимание: я заменю «Body» на переменную, а затем помещу все в цикл, чтобы можно было извлечь «Second String», сделав переменную равной «Extra».

1 Ответ

2 голосов
/ 17 февраля 2010

Сделайте не жадный улов, используя *?:

<!-- #BeginEditable \"Body\"[^>]*>(.*?)<!-- #EndEditable [^>]*>

Другой вариант - поймать правильного персонажа (не <, но это менее точно, если вы разрешите < с в вашем теле):

<!-- #BeginEditable \"Body\"[^>]*>([^<]*)<!-- #EndEditable [^>]*>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...