Регулярное выражение не совпадает внутри тега привязки html

У меня есть требование, когда мне не нужно сопоставлять определенное слово, когда происходит между тегом привязки. Якорные теги могут иметь другие html-теги.

Например:

    <a title="Test" href="http://www.google.com/"><span style="color: blue;">Test</span></a><p>Test - MANUALLY<br /><br /><a href="http://www.google.com">Google</a>&nbsp;</p><p> Resolving as duplicate of Test</p><p>Test  test</p>

Здесь каждый "Тест" выбирается. Все, что я хочу, это получить только "Test", отсутствующий внутри "anchor tag", а также не являющийся частью атрибутов "anchor tag".

Я использовал регулярное выражение:

    (?!<a[^>]*>)(Test)(?![^<]*<\/a>)/gi

1 ответ

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

(<a.*?<\/a>)|(test)/gi

https://regex101.com/r/rTLifk/1

Однако я настоятельно рекомендую использовать синтаксический анализатор XML или XPath.

Другие вопросы по тегам