我需要獲取HTML文件中所有'a'元素的href屬性值(大於特定長度)。我做了這樣的事情;正則表達式href最小長度
<a.*href\s*=\s*"(?<link>.{15,})".*>
但它不能正常工作。有什麼建議麼?
我需要獲取HTML文件中所有'a'元素的href屬性值(大於特定長度)。我做了這樣的事情;正則表達式href最小長度
<a.*href\s*=\s*"(?<link>.{15,})".*>
但它不能正常工作。有什麼建議麼?
這裏有一些方法來避免捕獲標籤內多個字段:
嘗試使量詞非貪婪。 {15,}?
而不是{15,}
。這樣它將停止在第二個雙引號中,而不是在<a />
標籤內捕獲更多字段。
一個更好的選擇是用更嚴格的東西來替換量詞前面的全部.
。嘗試使用獨佔字符類,例如[^\s]{15,}
將查找至少15個連續的非空白字符。
到目前爲止,這兩種方法都適用於我,但請記住,URL可能非常混亂,甚至在惡劣環境中變得格格不入,因此您無法保證抓住所有內容。你對目標網站的瞭解越多越好。
我測試的最後一個是perl中的'「(?<= href = \」)[^ \ s] {15,}(?= \「。*>)」'「。 – statueofmike
謝謝,我明白了。此外它不是一個專業的項目,只是一個簡單的下載管理器。 – Cem
[Obligatory link](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)。它[似乎工作「很好」](http://regex101.com/r/eZ3jK6),我們需要更多的例子來調試什麼不工作。 – Sam
我在Youtube的主頁上試了一下,發現了一些奇怪的字符串。我認爲這是因爲長度的原因,但現在我明白這個問題是另一回事了。 – Cem
你可能不得不逃避雙引號。您測試的URL是否格式良好? 您應該給出一個示例輸入和「怪異字符串」輸出。你在.NET中這樣做,對吧? – statueofmike