Вставляя адреса в наборы, размер наборов меньше ожидаемого

Я не буду приводить регулярное выражение для HTML-анализа, потому что такая вещь - фантазия.

Однако я, безусловно, могу помочь с общей проблемой «совместить это, но не внутри»: / g4]

Используйте метод обратного вызова

  • в JS, это просто .replace(/regex/, function(...) { ... })
  • в PHP, используйте preg_replace_callback - если я вижу, что вы используете preg_replace и модификатор /e, я буду жестоко убивать единорога, m'kay?

Ваше регулярное выражение должно быть структурировано следующим образом:

/(thing to NOT match inside of)|(actual match)/

Внутри вашего обратного вызова проверьте, содержит ли подшаблон 1 что-либо. Если это так, то вы имеете дело с «вещью, которая НЕ соответствует внутри», и вы можете просто return совпадающую строку без изменений. В противном случае у вас есть подшаблон 2, предмет, который вы хотите совместить, и вы можете работать в этом матче, как обычно.

29
задан Boann 5 July 2017 в 16:37
поделиться