Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2014, 20:05
Кандидат Javascript-наук
Отправить личное сообщение для riva Посмотреть профиль Найти все сообщения от riva
 
Регистрация: 24.06.2013
Сообщений: 115

Ограничение количества символов {,}, как оно работает?
Думал, что разобрался в регулярках, но оказывается нет.
У меня есть строки-шаблоны, которые известны зарание и нужно выбрать все между ними, но не учитывая переноса строк, если таковые будут.
var str = ':::aaa:::\n\ntext\ntext\n\n:::sss:::';

Выше итоговая строка, а ниже зарание известные "теги".
Цитата:
:::aaa:::
:::sss:::
Выбрать нужно текст ниже.
Цитата:
text\ntext
Единственное, на что стоит обратить внимание, это перенос строки, которых может быть сколько угодно после открывающего тега и сколько угодно до закрывающего.
var re = /:::aaa:::\n{0,}([\s\S]+)\n{0,}:::sss:::/

Думал, что хватит и кода выше, но вот именно из-за него и задал вопрос..
Второе \n{0,} не работает, как хотелось бы. Я понимаю, что назад смотрящих нет, но ведь я и не ищу то, что позади, я делаю акцент на том, что впереди.
Но запись \n{0,} оставляет оба переноса, если написать \n{1,}, то из результата убирается один перенос строки и т.д.
И от сюда первый вопрос - почему запись \n{0,} , которая звучит, как "разрыв строки, повторяющийся ноль и более раз", звучит, как "включить в результат ноль разрывов строки", а запись \n{1,}, как "включить в результат вычислений один разрыв строки"... Почему так?
И второй, как сделать, чтобы работало?)
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2014, 20:20
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Потому что [\s\S]+ - жадный, и забирает всё, что попадает под него, для второго \n{0,} ничего не остаётся(т.к. \n входит в \s). Тут либо сделать нежадным: [\s\S]+? , или задать иной диапазон.

P.S. \n{0,} - это \n*, \n{1,} - это \n+ .
__________________
29375, 35

Последний раз редактировалось Aetae, 19.08.2014 в 20:23.
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2014, 20:56
Кандидат Javascript-наук
Отправить личное сообщение для riva Посмотреть профиль Найти все сообщения от riva
 
Регистрация: 24.06.2013
Сообщений: 115

Спасибо! Кажется понял, как устроена эта жадность.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работает это скрипт? SVARAI Общие вопросы Javascript 1 10.07.2014 01:13
Не могу разобраться, как работает функция Dionid Общие вопросы Javascript 4 21.06.2014 18:14
Ширина поля input text в зависимости от количества символов rekon87 (X)HTML/CSS 7 14.06.2013 22:55
Как работает этот код doox911 Общие вопросы Javascript 11 02.04.2013 01:27
Ajax и три <form> не работает. Как правильно сделать листание записей из базы данных? vlad275 AJAX и COMET 2 14.12.2009 14:04