Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярки... (https://javascript.ru/forum/misc/72590-regulyarki.html)

АнонимныйПарень 11.02.2018 13:05

Регулярки...
 
Помогите, есть файл, я его читаю и там могут быть комментарии однострочные, вида: "//какой-то коммент"
Как их удалить с помощью регулярки?
Вот файл в котором буду удалять комменты:
alert(1);//awdajyjyjyjjywdawdawdwa

//awdawdawdawdwa

alert(2);
//awdahtjyjyjyjy


Прошу помощи только у вас))))

P.S с многострочными уже разобрался, нужно регулярка только для однострочных

Белый шум 11.02.2018 13:30

str.replace(/\/\/.*/g, '')

АнонимныйПарень 11.02.2018 15:44

А можете еще помочь?
 
Смотрите, есть строка вида:

alert(1);
"use strict";
alert(2);

Я удаляю все пробелы, табы и переносы строк:
string.replace(/\s*/g,'');


Получаю:
alert(1);"usestrict";alert(2);

Я хочу , что-бы удалились все пробелы, табы и переносы строк, игнорируя все что в кавычках, причем как одинарных ' ', так и в двойных " ".

Должно быть что-то вроде:
alert(1);"use strict";alert(2);

АнонимныйПарень 11.02.2018 15:44

Смотрите, есть строка вида:

alert(1);
"use strict";
alert(2);

Я удаляю все пробелы, табы и переносы строк:
string.replace(/\s*/g,'');


Получаю:
alert(1);"usestrict";alert(2);

Я хочу , что-бы удалились все пробелы, табы и переносы строк, игнорируя все что в кавычках, причем как одинарных ' ', так и в двойных " ".

Должно быть что-то вроде:
alert(1);"use strict";alert(2);

Aetae 11.02.2018 17:10

Это делается не регулярками, а конечным автоматом.

Само собой есть "тупое" решение: использовать три прохода - в первом заменить все "кавычные" строки на заменитель вида __СТРОКА_89__, заполняя соответствующий массив, вторым походом сделать то, что надо, и третьим вернуть строки на место. Но это классический "хуяк-хуяк" и будет на вашей совести.)

P.S. Не стоит также забывать, что кавычки в коде могут быть экранированы.)

АнонимныйПарень 11.02.2018 17:31

Можно подробнее про этот дедовский метод?))))) В действии хоть примерно

j0hnik 11.02.2018 19:21

АнонимныйПарень,
Если вы хотите тем самым как то сжимать скрипт, есть подводные камни

alert(5.toString());

alert(5 .toString());

Alexandroppolus 12.02.2018 01:39

Цитата:

Сообщение от Aetae
Это делается не регулярками, а конечным автоматом.

Одно другому не мешает )
Как-то была аналогичная задача, я запилил КА через replace+regex


Часовой пояс GMT +3, время: 20:48.