У меня есть исходная строка, в которой одна и та же строка повторяется несколько раз. Мне нужно сопоставить последнее вхождение строки (String A) и другую строку (String B). Строка A встречается несколько раз перед строкой B.
Мне не удалось найти, что отрицательный прогноз будет работать.
Перейти к измененной исходной строке
Исходная строка
<a href="Link1">some text 1</a><a href="Link2">some text 2</a><a href="Link3">Required text</a><a href="Link4">some text 4</a>
ПРИМЕЧАНИЕ. Количество вхождений строки A (<a href=
) может варьироваться.
Требуемые результаты
Соответствие: <a href="Link3">Required text</a>
с группой захвата 1: Link 3
Использование этого шаблона RegEx: <a href="(.+?)".+?>Required text<\/a>
Соответствует:
<a href="Link1">some text 1</a><a href="Link2">some text 2</a><a href="Link3">Required text</a>
Группа захвата 1: Link 1
Вы можете просмотреть настройку здесь: https://regex101.com/r/XsEmXw/1/
Я пробовал много различных отрицательных опережений просмотра, но ни один из них не помог. Например:
<a href="(.+?)"(?!.+?\<a href.+?Required).+?>Required text<\/a>
TIA за вашу помощь.
Исправленная исходная строка
Хорошо, плохо, я слишком упростил исходную строку в приведенном выше описании.
Фактическая исходная строка очень сложна. Вы можете просмотреть его здесь:
https://regex101.com/r/VHrrNj/1/
Ответ, приведенный ниже, очень умен, но, к сожалению, не работает для полного сложного случая: <a href="([^"]*)".+?Read more.+?<\/a>
Пересмотренный требуемый результат
Соответствие:
<a href="https://s2.washingtonpost.com/298378e/5ece9636e6e81b69fea16209/597ba5e59bbc0f6826cfe531/2/10/1db89a19afda3018ce8cfede0cfb6768" style="color: #2a2a2a; font-weight: bold; text-decoration: none;">Read more »</a>
Группа захвата 1: https://s2.washingtonpost.com/298378e/5ece9636e6e81b69fea16209/597ba5e59bbc0f6826cfe531/2/10/1db89a19afda3018ce8cfede0cfb6768
Еще раз спасибо за вашу помощь.