Regex для удаления много комментариев строки

Я пытаюсь использовать этот regex (JS):

/\/\*(.*)\*\//g

Заменять

/*
sdandsads
*/

ни с чем.

Но это не работает! Почему?o_O

6
задан tangens 16 March 2010 в 23:02
поделиться

2 ответа

точка ловит все, кроме новых строк... ( if the dotall is false )

поэтому либо используйте dotall ( как упоминалось в других ответах/комментариях, это не поддерживается в javascript, но я оставлю это здесь для справки )

/\/\*(.*)\*\//gs

либо добавьте пробельные символы \s в ваши выражения

/\/\*((\s|.)*?)\*\//g

Алан упомянул в своем комментарии плохую производительность от ответа, который я дал, поэтому используйте следующее вместо этого. . ( что переводится как все пробельные символы и все не пробельные символы, так что все... )

/\/\*([\s\S]*?)\*\//g
13
ответ дан 8 December 2019 в 13:45
поделиться

Две проблемы:

  1. В javascript нет модификатора dotall. Вам нужно будет использовать хитрость, чтобы разрешить сопоставление новой строки, например, используя [^] .
  2. Вы используете жадное сопоставление. Если в вашем вводе несколько комментариев, все между ними будет съедено.

Решение:

/\/\*[^]*?\*\//g

Пример:

> '/*abc\ncde*/qqq/*iop\n\njj*/'.replace(/\/\*[^]*?\*\//g, '')
qqq
4
ответ дан 8 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: