Страницы

Поиск по вопросам

понедельник, 8 апреля 2019 г.

Регулярное выражение , все что между знаками *

Есть комментарии в коде:
/* /templates/images/icon.png */
как с помощью RegExp выбрать все что между звездочками, + сами звездочик со слешами:

пути будут разные только по длине, могу цифры попадаться.
([/*-*/])\w+ - так не получается


Ответ

Лучший вариант этого выражения — развернутый (?s)\/\*.*?\*\/, который выглядит как
/\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//g
См. демо регулярного выражения
Подробности:
\/\* - начало комментария /* [^*]*\*+ - 0+ знаков, отличных от *, за которыми следует 1+ згаков * (?:[^\/*][^*]*\*+)* - 0+ последовательностей:
[^\/*][^*]*\*+ - символ, отличный от / и *, за которым следует 0+ знаков, отличных от звёздочки, за которыми следует 1+ звёздочек \/ - закрывающий знак /
Минус только в том, что если нужно получить только то, что между /* и */, нужно будет убрать последнюю букву с помощью, например, substr
var regex = /\/\*([^*]*\*+(?:[^\/*][^*]*\*+)*)\//g; var str = "/* /templates/images/icon.png */
/* /templates/images/icon.png
* Тут тоже бывает текст
*/"; while (m = regex.exec(str)) { console.log("Полное совпадение: " + m[0]); console.log("Без /* и */: "+m[1].substring(0,m[1].length-1).trim()); }

Комментариев нет:

Отправить комментарий