7
我需要做一個非貪婪的匹配,並希望有人能幫助我。我有以下,我正在使用JavaScript和ASP非貪婪的正則表達式匹配,JavaScript和ASP
match(/\href=".*?\/pdf\/.*?\.pdf/)
上述匹配匹配href標記的第一個開始。我需要它只匹配/pdf/
文件夾中最後一個href。
有什麼想法?
我需要做一個非貪婪的匹配,並希望有人能幫助我。我有以下,我正在使用JavaScript和ASP非貪婪的正則表達式匹配,JavaScript和ASP
match(/\href=".*?\/pdf\/.*?\.pdf/)
上述匹配匹配href標記的第一個開始。我需要它只匹配/pdf/
文件夾中最後一個href。
有什麼想法?
您需要使用捕獲括號的子表達式匹配:
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>
這讓我/pdf/filename.pdf,但我需要獲得<一個href =「somedirecrories/pdf /文件.pdf」但我剝離鏈接從HTML代碼,並有文件中更高的其他href的引用 - 所以我想我需要某種模式匹配 – 2010-03-11 13:08:33
@Gerald:對不起,我沒有意識到這就是你的意思。我已經更新了我的答案。 – 2010-03-11 13:50:46
完全符合我的要求 - 謝謝Andy – 2010-03-11 14:07:32