Я должен извлечь несколько имен файлов из строки, включая возможный путь.Проблема (для меня) в том, что строка может иметь много вариаций, и, если не присутствует, символ должен быть вставлен перед именем файла.Я думаю, что приведенный ниже пример должен облегчить понимание.
Я пробовал следующий код Spahetti, потому что я не regex profi и не знаю, как выполнять несколько манипуляций.Также в этом фрагменте скрипта вставка символа перед отсутствующим именем файла.Обратите внимание, что я нажимаю каждое отдельное имя файла в массиве filenames
const regex = /@import(.*);/gm; const str = content; let m;
while ((m = regex.exec(str)) !== null) {
if (m.index === regex.lastIndex) regex.lastIndex++; // stop infinity loop
// Init variable
var filename = m[1];
// Remove spaces
filename = filename.trim();
// Remove ', ", ` from first and last character
if (filename.charAt(0) === "'" || filename.charAt(0) === '"' || filename.charAt(0) === "`") filename = filename.substr(1);
if (filename.charAt(filename.length - 1) === "'" || filename.charAt(filename.length - 1) === '"' || filename.charAt(filename.length - 1) === "`") filename = filename.substring(0, filename.length - 1);;
// Remove / from first character
if (filename.charAt(0) === "/") filename = filename.substr(1);
// Remove _ from first character
if (filename.substr(filename.length - 3) !== ".js") filename = filename+".js";
// Push
filenames.push(filename);
}
Вот теперь начальная строка:
// i am a 'comment'
@import 'jquery-3.3.1';
@import "_slick.js";
@import `subfolder/_analytics`;
@import `/subfolder/bootstrap`;
@import `subfolder/javascript/marvin.js`;
Это должно быть включено в filenames
массив после манипуляции со строкой:
[ '_jquery-3.3.1.js', '_slick.js', 'subfolder/_analytics.js', 'subfolder/_bootstrap.js', 'subfolder/javascript/_marvin.js' ]