Я должен сделать не жадное соответствие и надеяться, что кто-то может помочь мне. У меня есть следующее, и я использую JavaScript и ASP
match(/\href=".*?\/pdf\/.*?\.pdf/)
Вышеупомянутое соответствие, соответствует первому запуску тега href. Мне нужен он, чтобы только соответствовать последнему href, который является частью /pdf/
папка.
какие-либо идеи?
Вам необходимо использовать скобки для захвата для совпадений подвыражений:
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>