Ger*_*ira 7 regex regex-greedy
我需要做一场非贪婪的比赛,并希望有人能帮助我.我有以下内容,我使用的是JavaScript和ASP
match(/\href=".*?\/pdf\/.*?\.pdf/)
Run Code Online (Sandbox Code Playgroud)
上面的匹配匹配href标记的第一个开头.我需要它只匹配作为/pdf/文件夹一部分的最后一个href .
有任何想法吗 ?
您需要使用捕获括号进行子表达式匹配:
match(/\href=".*?(\/pdf\/.*?\.pdf)/)[1];
Run Code Online (Sandbox Code Playgroud)
Match将返回一个数组,其中整个匹配位于索引0处,所有子表达式捕获将按照它们匹配的顺序添加到数组中.在这种情况下,index 1包含节匹配\/pdf\/.*?\.pdf.
.*?它的匹配范围过于宽泛.例如:
match(/\href="([^"]+?\/pdf\/[^\.]+?\.pdf)"/)[1];
Run Code Online (Sandbox Code Playgroud)
[^"]+?将懒惰地匹配不包含双引号字符的字符串.这将限制匹配保持在引号内,因此匹配在以下字符串中不会太宽,例如:
<a href="someurl/somepage.html">Test</a><a href="dir/pdf/file.pdf">Some PDF</a>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3577 次 |
| 最近记录: |