Javascript Regex - совпадение многострочных строк (карта SCSS)

1

В настоящее время я работаю над сценарием Node, который будет искать в файле SCSS (Sass) с использованием регулярных выражений. Целью является создание массива/массивов всех определенных переменных и их значений. Затем их можно сравнить со значениями, задокументированными в проектной документации, чтобы проверить, все ли синхронизировано.

Я использовал следующее регулярное выражение для сопоставления однострочных переменных:

string.match(/\$[az-]+:(.*)(?=;)/)

а также

string.match(/[$a-zA-Z-]+(?=:)/g)[0] чтобы извлечь имя каждой переменной. Однако карты SCSS и переменные SCSS с довольно многословными значениями могут распространяться на несколько строк.

Как я могу найти строку, которая начинается с $, заканчивается на ; и может быть распределен по нескольким строкам? В идеале я хотел бы использовать несколько групп захвата для возврата одного массива с однострочными переменными в одной группе и отображениями SCSS в другой. Это не важно, хотя два регулярных выражения было бы хорошо.

  • 1
    Возможно, вам лучше использовать что-то вроде scss-parser вместо регулярных выражений.
  • 0
    « Я хотел бы использовать несколько групп захвата » невозможно с помощью регулярного выражения JS. Если вы хотите сопоставить подстроку, начинающуюся с $ в начале строки до первой ; , используйте s.match(/^\$[^;]+/gm)
Теги:

1 ответ

0

Если вы можете использовать последние версии Node.js с поддержкой ES2018, вы можете попробовать /s флаг.

Однако для таких целей подходящий парсер будет лучше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню