442
правки
Изменения
→Жадная и ленивая квантификация
==== Жадная и ленивая квантификация ====
В некоторых реализациях квантификаторам в регулярных выражениях соответствует максимально длинная строка из возможных (квантификаторы являются жадными, англ. ''greedy''). Это может оказаться значительной проблемой. Например, часто ожидают, что выражение <tex>(<.*>)</tex> найдёт в тексте теги HTML. Однако если в тексте есть более одного HTML-тега, то этому выражению соответствует целиком строка, содержащая множество тегов.
{| class="wikitable"
! Жадный
! Ленивый
|-
| <tex>*</tex>| <tex>*?</tex>
|-
| <tex>+</tex>| <tex>+?</tex>
|-
| <tex>{n,}</tex>| <tex>{n,}?</tex>
|}
Эту проблему можно решить двумя способами.
Учитывать символы, не соответствующие желаемому образцу <tex>(<[^>]*></tex> для вышеописанного случая).
Определить квантификатор как нежадный (ленивый, англ. ''lazy'') {{---}} большинство реализаций позволяют это сделать, добавив после него знак вопроса.
==== Ревнивая квантификация (Сверхжадная) ====