Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.07.2017, 11:51
Аватар для Prolific
Интересующийся
Отправить личное сообщение для Prolific Посмотреть профиль Найти все сообщения от Prolific
 
Регистрация: 01.07.2017
Сообщений: 19

Регулярные выражения. Нежадное повторение
Привет, форумчане. Не могу разобраться с вопросом о регулярных выражениях.
Есть строка: aaab
Есть регулярное выражение /a+b/ оно выведет строку aaab, с этим все понятно
Регулярное выражение /a+?b/ выведет строку aaab, хотя по идее должно вывести ab
Объясните почему это так, как идет сам поиск.
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 03.07.2017, 12:02
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Поиск идет слева направо. Регулярка стремится как можно скорее найти совпадение. "aaab" хоть и длиннее, чем "ab", но начинается раньше, потому так.

Вот если сделать необязательное b (a+?b?), то да, будет "а".
В то же время, a+b? снова дает "aaab", т.к. оба отрезка жадные.
a+b?? даст "aaa", тут ашки жадные, б-шки нет.

https://learn.javascript.ru/regexp-greedy-and-lazy

Последний раз редактировалось Alexandroppolus, 03.07.2017 в 12:05.
Ответить с цитированием
  #3 (permalink)  
Старый 03.07.2017, 12:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Prolific
хотя по идее должно вывести ab
Шаблон в этом случае должен быть /a?b/
Ответить с цитированием
  #4 (permalink)  
Старый 03.07.2017, 12:08
Аватар для Prolific
Интересующийся
Отправить личное сообщение для Prolific Посмотреть профиль Найти все сообщения от Prolific
 
Регистрация: 01.07.2017
Сообщений: 19

Спасибо, понял
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения zoinx2010 Общие вопросы Javascript 4 07.02.2014 16:37
Составить регулярные выражения ($) Zero Tolerance Общие вопросы Javascript 10 19.11.2013 13:14
Регулярные выражения для javascript qwert_ukg Общие вопросы Javascript 3 20.04.2012 13:45
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 01:08
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35