Отрицание обратной ссылки FQDN в HTML HREF
Для контекста я пытаюсь вызвать в тегах HREF html, где полное доменное имя ссылки HREF не совпадает с полным доменным именем цели HREF. Это предполагает, что целью, которая отображается для зрителя, является URL-адрес HTTP или HTTPS.
Мое регулярное выражение очень близко... ОЧЕНЬ близко. На самом деле он совпадает с противоположным, где совпадают полные доменные имена. За исключением того, что с тегом изображения внутри него, это правильно.
Ссылка на Regex101: https://regex101.com/r/4do2iB/4
Regex: (?i)(<A HREF=\"https?\:\/\/)(.*?\.[a-z]+)(\"\>"|\">|\/.+>)((?!<IMG).?)(https?:\/\/)?(\2).*?<\/A>
Тестовые образцы, которые я не хочу запускать:
<A HREF="https://www.google.ca">https://www.google.ca</A>
<A HREF="https://www.google.ca">https://www.google.ca/</A>
<A HREF="http://www.google.ca/">http://www.google.ca</A>
<A HREF="https://www.google.ca/something/good.html">https://www.google.ca/something/different/good.html</A>
<A HREF="https://www.google.ca/something/good.html">www.google.ca/something/good.html</A>
<A HREF="https://www.google.com">www.google.com</A>
<A HREF="https://www.google.com"><IMG SRC=https://www.google.ca/picture.gif></A>
Тестовые образцы, которые я действительно хочу запустить:
<A HREF="https://www.google.com">www.google.ca</A>
<A HREF="http://www.google.com/">www.google.ca</A>
<A HREF="https://www.scam.ca">www.google.ca</A>
<A HREF="https://www.scam.ca/test/blahblahblah.html">https://www.google.ca</A>
<A HREF="https://www.google.scam.ca/test/blahblahblah.html">https://www.google.ca</A>
<A HREF="https://www.google.scam.very.long.domain.ca/test/blahblahblah.html">https://www.google.ca</A>
<A HREF="https://www.google.scam.very.long.domain.ca/test/blahblahblah.html">www.google.ca/totally/a/scam</A>
Чтобы опровергнуть выражение, я попытался изменить обратную ссылку. (\2)
в (?<!2)
, Тем не менее, это был шаг в неправильном направлении, поскольку он полностью противоречил моей необходимости просто сопоставлять каждый контрольный пример. Я не могу найти какой-либо другой способ перевернуть совпадение, что означает, что я явно что-то запутал - однако это я не имею ни малейшего понятия.