Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.04.2016, 12:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Frozen Coyote
как заставить выражение выцепить оба?
и что потом?
Ответить с цитированием
  #12 (permalink)  
Старый 15.04.2016, 12:38
Интересующийся
Посмотреть профиль Найти все сообщения от stupidpendos
 
Регистрация: 09.04.2016
Сообщений: 12

Frozen Coyote,
Кстати, он Вам неверный код дал. там у него во первых поиск жадный, он будет жрать все подряд идущие параграфы как один, а во вторых, он будет на переносах строк спотыкаться, и еще там есть подводные камни.

Последний раз редактировалось stupidpendos, 15.04.2016 в 12:42.
Ответить с цитированием
  #13 (permalink)  
Старый 15.04.2016, 13:10
Интересующийся
Отправить личное сообщение для Frozen Coyote Посмотреть профиль Найти все сообщения от Frozen Coyote
 
Регистрация: 16.02.2011
Сообщений: 14

да, Вы правы, буду по другому. Тогда последний вопрос по моей задачке:

почему выражение /<\/p>(.+?)?<\/p>/gi в строке </p></p></p>123</p> ловит расширенное </p></p></p> но не ловит первое совпадение <\/p><\/p> - жадность как бы выключена, да и я указал знаком вопроса после скобочного участка, что группа как может присутвовать так и отсутствовать. В чем ошибка моя?
Ответить с цитированием
  #14 (permalink)  
Старый 15.04.2016, 14:51
Интересующийся
Посмотреть профиль Найти все сообщения от stupidpendos
 
Регистрация: 09.04.2016
Сообщений: 12

Сообщение от Frozen Coyote Посмотреть сообщение
да, Вы правы, буду по другому. Тогда последний вопрос по моей задачке:

почему выражение /<\/p>(.+?)?<\/p>/gi в строке </p></p></p>123</p> ловит расширенное </p></p></p> но не ловит первое совпадение <\/p><\/p> - жадность как бы выключена, да и я указал знаком вопроса после скобочного участка, что группа как может присутвовать так и отсутствовать. В чем ошибка моя?
на вскидку, потому, что + означает хотя бы один символ. Попробуйте звезду вместо него. Тестить неохота
Ответить с цитированием
  #15 (permalink)  
Старый 15.04.2016, 14:58
Интересующийся
Отправить личное сообщение для Frozen Coyote Посмотреть профиль Найти все сообщения от Frozen Coyote
 
Регистрация: 16.02.2011
Сообщений: 14

и правильно, что неохота. ибо не работает.
Ответить с цитированием
  #16 (permalink)  
Старый 15.04.2016, 15:06
Интересующийся
Посмотреть профиль Найти все сообщения от stupidpendos
 
Регистрация: 09.04.2016
Сообщений: 12

Сообщение от Frozen Coyote Посмотреть сообщение
и правильно, что неохота. ибо не работает.
у меня работает
alert("</p></p></p>".match(/<\/p>.*?<\/p>/)[0])
Ответить с цитированием
  #17 (permalink)  
Старый 15.04.2016, 16:03
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

Frozen Coyote,
Да, увидел, что не правильно сделал в предыдущем варианте. Сам параллельно с Вами разбираюсь.
var apr = "It's a dark april night",
    may = "It's a bright may day",
    jun = "It's a bright june day",
    jul = "It's a bright july day";
 
var pattern = /bright(:?(?!june).)*day/;
 
alert(apr.match(pattern));
alert(may.match(pattern));
alert(jun.match(pattern));
alert(jul.match(pattern));
Ответить с цитированием
  #18 (permalink)  
Старый 15.04.2016, 23:24
Интересующийся
Отправить личное сообщение для Frozen Coyote Посмотреть профиль Найти все сообщения от Frozen Coyote
 
Регистрация: 16.02.2011
Сообщений: 14

Александр, вот у человека вышеозначенный пример работает

alert("</p></p></p>".match(/<\/p>.*?<\/p>/)[0])

я что то не пойму, как может ловиться совпадение <\/p><\/p> ведь между этими закрывающимися тегами стоит .*? что означает как я понимаю как минимум наличие одного символа? или я неправ?

спасибо Вам за помощь
Ответить с цитированием
  #19 (permalink)  
Старый 16.04.2016, 00:35
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

Frozen Coyote,
. -один любой символ, кроме новой строки
* - совпадение выражения 0 или более раз
? - совпадение выражения 0 или 1 раз

Ссылка

Т.е. может и не быть символа вообще. Не понятно, зачем проверять на 0 или более (*), а потом на 0 или 1 совпадение(?).
Ответить с цитированием
  #20 (permalink)  
Старый 16.04.2016, 10:18
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Alexander Belov Посмотреть сообщение
Не понятно, зачем проверять на 0 или более (*), а потом на 0 или 1 совпадение(?).
Это называется нежадный/ленивый поиск
Цитата:
важно понимать: обычно ? сам является квантификатором (ноль или один). Но если он стоит после другого квантификатора (или даже после себя), то обретает другой смысл – в этом случае он меняет режим его работы на ленивый.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить регулярное выражение yura29 Общие вопросы Javascript 3 08.06.2014 00:35
Помогите написать регулярное выражение bigjoy Общие вопросы Javascript 2 15.02.2014 23:23
Помогите составить регулярное выражение Ucorp Общие вопросы Javascript 1 17.10.2012 16:28
Помогите написать регулярное выражение! Dorian_bs Общие вопросы Javascript 7 09.12.2011 09:12
регулярное выражение, помогите serhanters jQuery 2 12.07.2011 10:14