Как я могу написать регулярное выражение, которое соответствует не жадный?
мне нужна помощь о регулярном выражении, соответствующем не жадному варианту.
шаблон матч:
<imgs.*>
текст, чтобы соответствовать:
<html>
<img src="test">
abc
<img
src="a" src='a' a=b>
</html>
Я тестирую на http://regexpal.com
это выражение соответствует всему тексту из <img
в прошлом >
. Мне нужно, чтобы он соответствовал первому встреченному >
после первого <img
, Так что здесь мне нужно будет получить два матча вместо того, который я получаю.
I перепробовал все комбинации нежадный ?
, без успеха.
3 ответа:
не-жадный
?
работает прекрасно. Просто нужно выбрать точка соответствует всем опция в движках регулярных выражений (regexpal, двигатель, который вы использовали, также имеет эту опцию)вы тестируете. Это связано с тем, что механизмы регулярных выражений обычно не соответствуют разрывам строк при использовании.
. Вы должны сказать им явно, что вы хотите, чтобы соответствовать разрывы строк тоже с.
например,
<img\s.*?>
строительство ладно!
Регистрация здесь.
кроме того, читайте о как точка поведение в различных вкусах regex.
The
?
операнд делает матч не жадным. Е. Г..*
жадный, а.*?
нет. Так что вы можете использовать что-то вроде<img.*?>
чтобы соответствовать всему тегу. Или<img[^>]*>
.но помните, что весь набор HTML не может быть фактически проанализирован с помощью регулярных выражений.
Проверьте переполнение стека вопрос что означает ленивый и жадный в контексте регулярных выражений? как хорошо.
жадные средства соответствуют самой длинной возможной строке.
ленивый означает соответствие кратчайшие строки.
например, жадный h.+L соответствует " аду " в "привет", но ленивый h.+?l соответствует 'hel'.