Регулярные выражения. Нежадное повторение
Привет, форумчане. Не могу разобраться с вопросом о регулярных выражениях.
Есть строка: aaab Есть регулярное выражение /a+b/ оно выведет строку aaab, с этим все понятно Регулярное выражение /a+?b/ выведет строку aaab, хотя по идее должно вывести ab Объясните почему это так, как идет сам поиск. Спасибо. |
Поиск идет слева направо. Регулярка стремится как можно скорее найти совпадение. "aaab" хоть и длиннее, чем "ab", но начинается раньше, потому так.
Вот если сделать необязательное b (a+?b?), то да, будет "а". В то же время, a+b? снова дает "aaab", т.к. оба отрезка жадные. a+b?? даст "aaa", тут ашки жадные, б-шки нет. https://learn.javascript.ru/regexp-greedy-and-lazy |
Цитата:
|
Спасибо, понял
|
Часовой пояс GMT +3, время: 18:13. |