Думал, что разобрался в регулярках, но оказывается нет.
У меня есть строки-шаблоны, которые известны зарание и нужно выбрать все между ними, но не учитывая переноса строк, если таковые будут.
var str = ':::aaa:::\n\ntext\ntext\n\n:::sss:::';
Выше итоговая строка, а ниже зарание известные "теги".
Цитата:
|
:::aaa:::
:::sss:::
|
Выбрать нужно текст ниже.
Единственное, на что стоит обратить внимание, это перенос строки, которых может быть сколько угодно после открывающего тега и сколько угодно до закрывающего.
var re = /:::aaa:::\n{0,}([\s\S]+)\n{0,}:::sss:::/
Думал, что хватит и кода выше, но вот именно из-за него и задал вопрос..
Второе
\n{0,} не работает, как хотелось бы. Я понимаю, что назад смотрящих нет, но ведь я и не ищу то, что позади, я делаю акцент на том, что впереди.
Но запись
\n{0,} оставляет оба переноса, если написать
\n{1,}, то из результата убирается один перенос строки и т.д.
И от сюда первый вопрос - почему запись
\n{0,} , которая звучит, как "разрыв строки, повторяющийся ноль и более раз", звучит, как "включить в результат ноль разрывов строки", а запись
\n{1,}, как "включить в результат вычислений один разрыв строки"... Почему так?
И второй, как сделать, чтобы работало?)