Регулярное выражение не совпадает внутри тега привязки 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> </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.