Подскажите регулярное выражение по извлечению последнего совпадения
-
@Denis_krsk к сожалению мне нужно максимально широкое вхождение использовать
href="(.*)".*Контакты<\/a>
Ищу способ чтобы используя это вхождение использовать последнее значение, а не захватывать все
-
-
@Fox нет, забирает кучу всего ведь
https://regex101.com/r/S6CTKw/1/ вот так через GROUP1 может забирать первое значение
Подсказали решение xpatch. Все работает, но может быть будут еще советы как через регулярку, любопытно//*[.='Контакты']/@href
-
Вакансии.*href="(.+?)".*Контакты</a>
-
@ruzne said in Подскажите регулярное выражение по извлечению последнего совпадения:
.*href="(.+?)".*Контакты</a>
Большое спасибо, работает, теперь буду знать
-
@romanbiz Уверены что работает? Без экранирования слеша в закрывающимся теге <
/
a>?Вакансии.*?href="(.+?)".*?Контакты<\/a>
XPath потребляет гораздо меньше ресурсов по сравнению с регулярками.
-
@romanbiz Я понял почему моя регулярка не срабатывала, почему не жадный алгоритм поиска не работал.
Вот так сработает именно как надо:href="[^"]*?" rel
-
@Fox Ну я автоматически экранирую) Спасибо за Ваш вариант и за совет по Xpatch
-
@Fox К слову, а что это "rel"? Просто нигде не попадался такая функция.
-
@Denis_krsk
:D
Это не функция, а тело запроса.<a href="contact" rel="nofollow"
По этому я сперва допустил ошибку, решив что получу contact запросом с не жадным алгоритмом
href=".*?" rel
Но он взял первый попавшийся href=" и захватил все символы до " rel, включая первую закрывающуюся кавычку и добрую половину документа.
По этому пришлось брать диапазон любой символ, кроме кавычки[^"]
с квантором 0 и больше, не жадный*?
-
@Fox Хах :)
-
@Fox аа)), в таком случае неактуально. На большинстве сайтов rel нету. Поэтому я максимально широкое соответствие выбирал.
-
@Fox Но в любом случае регулярка выше и Xpatch решили задачу с лихвой. Спасибо)