Не жадное соответствие regex, JavaScript и ASP

Я должен сделать не жадное соответствие и надеяться, что кто-то может помочь мне. У меня есть следующее, и я использую JavaScript и ASP

match(/\href=".*?\/pdf\/.*?\.pdf/)

Вышеупомянутое соответствие, соответствует первому запуску тега href. Мне нужен он, чтобы только соответствовать последнему href, который является частью /pdf/ папка.

какие-либо идеи?

7
задан AndersTornkvist 24 October 2011 в 21:26
поделиться

1 ответ

Вам необходимо использовать скобки для захвата для совпадений подвыражений:

match(/\href=".*?(\/pdf\/.*?\.pdf)/)[1]; 

Match вернет массив со всем совпадением по индексу 0, все вложенные выражения будут захвачены будут добавлены в массив в том порядке, в котором они совпали. В этом случае индекс 1 содержит соответствие раздела \ / pdf \ /.*? \. Pdf .


Попробуйте сделать ваше регулярное выражение более конкретным, чем просто .*?, если оно слишком широко соответствует. Например:
match(/\href="([^"]+?\/pdf\/[^\.]+?\.pdf)"/)[1];

[^ "] +? будет лениво соответствовать строке символов, которая не 'не содержат символа двойной кавычки. Это ограничит соответствие совпадения внутри кавычек, поэтому соответствие не будет слишком широким в следующей строке, например:

<a href="someurl/somepage.html">Test</a><a href="dir/pdf/file.pdf">Some PDF</a>
6
ответ дан 7 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: