В целом это трудно (но, конечно, не невозможно), чтобы делать такого рода разбор с регулярным выражением - у вас есть чтобы сделать предположения, такие как ввод корректно сформирован.
Обратите внимание, что в вашем регулярном выражении {1}
является избыточным, поэтому его можно удалить.
Вы можете сделать что-то вроде следующего, который соответствует URL, только если это не с последующим */
(без согласования /*
). Логика в том, что если она в следуют */
, это, вероятно, в комментарии:
((mailto\:|(news|(ht|f)tp(s?))\://)\S+)(?!([^*/]|\*[^/]|/[^*])*\*/)
Конечно, это не сработает, если у вас есть */
в источнике, не имея соответствующие /*
, например,
/* http://goog.le */ # this won't match
http://goog.le # this will match
http://google/ "*/fdsa" # this won't match!
Я думаю, что любой подход регулярных выражений взять волю в какой-то мере полагаться на вход, будучи хорошо сформировавшимися - комментарии являются сбалансированными и т.д.
(Если вы используете JavaScript, можно использовать что-то вроде анализа XML вместо этого? Это работает намного лучше и, вероятно, позволит вам игнорировать комментарии в любом случае).
бы не только соответствие внутри строк достаточно? – Qtax