2015-06-18 3 views
0

Я написал это регулярное выражение, чтобы найти абсолютно все виды комментариев в файле, но он обнаруживает http:// также из-за (//.*).REGEX найти все комментарии

(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*)|(<!--[\s\S]*?-->) 

Как изменить это регулярное выражение, чтобы не найти http: // и т. Д.? Считаете ли вы, что это оптимальное регулярное выражение для этой цели? Если нет, что вы предлагаете?

+6

Я не думаю, что это хорошая идея, чтобы смешать все виды комментариев от разных языков в одно регулярное выражение. Регулярное выражение станет бесполезным. – nhahtdh

+0

'(?

+0

@nhahtdh, так что вы предлагаете? – heron

ответ

1

Похоже, здесь очень весело. :) Как насчет использования метода негативного lookbehind с регулярным выражением, если он поддерживается с помощью используемой вами установки. Вместо того, чтобы:

// 

использования:

(?<!:)// 
+2

Как насчет этого js: 'var x = {a: // oops 1};' –

+0

@JamesThorpe, да, есть также '^'(начало строки) или полный подход http: | https: lookbehind. Я думаю, что @ heron достаточно умна, чтобы выбрать, какой из них лучше всего, и хороший тест на различные сценарии. Однако я бы использовал существующий код/​​библиотеку. :) – bjfletcher

+1

Даже относительный протокол URL-адресов там, например '// wrongturn.com' @heron ϡ –