2010-02-17 2 views
1

у меня есть это регулярное выражение в 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 -->' 

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

Пожалуйста, обратите внимание: я будет заменить «тело», чтобы стать переменной, а затем поместить все это в цикле, так что я могу извлечь «Second String», сделав переменной равным «Экстра»

ответ

2

Do. не жадный улов с помощью *?:

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

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

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

Отлично, что сделал трюк! Спасибо, миллион раз! Ты спас меня от крайней депрессии! – Stephen

+0

Отлично! Потому что вы должны следить за своим здоровьем. Вот что действительно важно :). Рад был помочь. – Kobi

Смежные вопросы