-1

У меня есть текст полученный с Genius, используя определенный скрипт я вставляю этот текст, заменяя \n на <br>. Текст с genius содержит в себе переходы (куплет, припев, дроп, обозначение автора, и т.п), вот два примера: [Куплет 1: Pyrokinesis] и [Куплет 2: найтивыход]

В полученном тексте их примерно 3-6, и мне нужно в тексте обозначить эти переходы с помощью элемента с сменой цвета. Вот что я использую:

return val.replace(/\n/gm, '<br>').replace(/(\[.*\])/gm, '<b style="color: #FFEEF0">$1</b>')

По сути, \n меняется на br, что мне и нужно, а вот регекс подсветки ведет себя странно. Дело в том, что тег b обхватывает весь текст, до последнего перехода ([Аутро: найтивыход]). В регулярных выражениях я не особо разбираюсь.

В общем: мне нужно чтоб было несколько совпадений, которые заменят только переходы, а не одно совпадение, которое обхватит начало и конец (задев текст).

  • Что если заменить /(\[.*\])/gm на /(\[.*?\])/g? – Wiktor Stribiżew Jul 12 '21 at 13:52
  • @WiktorStribiżew, Да, это сработало, спасибо. А можно обьяснение, почему обхват шел на весь текст, и что произошло теперь? – X-49 Jul 12 '21 at 13:55

1 Answers1

-1

надо менять не \[.*\], т.к. это захватывает дословно символ [ и жадно 0+ любых символов (кроме перевода строки по умолчанию) + символ ]. Если надо до первой встречи ] = нежадно, то так и писать -- \[[^\]]*\[ -- символ [ и 0+ любых символов, кроме ] + символ ].

Ещё нежадный поиск включается с помощью .*?

joker
  • 3
  • 1