我需要做一场非贪婪的比赛,并希望有人能帮助我。我有以下内容,我正在使用JavaScript和ASP
match(/\href=".*?\/pdf\/.*?\.pdf/)
上述匹配匹配href标记的第一个开头。我需要它只匹配作为/pdf/
文件夹一部分的最后一个href。
任何想法?
答案 0 :(得分:6)
您需要使用捕获括号进行子表达式匹配:
match(/\href=".*?(\/pdf\/.*?\.pdf)/)[1];
匹配将返回一个数组,其中整个匹配位于索引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>