Я не буду приводить регулярное выражение для HTML-анализа, потому что такая вещь - фантазия.
Однако я, безусловно, могу помочь с общей проблемой «совместить это, но не внутри»: / g4]
Используйте метод обратного вызова
.replace(/regex/, function(...) { ... })
preg_replace_callback
- если я вижу, что вы используете preg_replace
и модификатор /e
, я буду жестоко убивать единорога, m'kay? Ваше регулярное выражение должно быть структурировано следующим образом:
/(thing to NOT match inside of)|(actual match)/
Внутри вашего обратного вызова проверьте, содержит ли подшаблон 1 что-либо. Если это так, то вы имеете дело с «вещью, которая НЕ соответствует внутри», и вы можете просто return
совпадающую строку без изменений. В противном случае у вас есть подшаблон 2, предмет, который вы хотите совместить, и вы можете работать в этом матче, как обычно.