我有一個正則表達式,我從互聯網上獲得了匹配URL鏈接的<a>
標籤。看起來如下:瞭解這個正則表達式
variable = re.compile('<a\s(?:.*?\s)*?href=[\'"](.*?)[\'"].*?>')
會有人請解釋我是這樣打算彭定康究竟如何來匹配<a>
標籤的內容是什麼?
我對Unix中的正則表達式有基本的理解,但這對我來說看起來太複雜了,並且非常感謝任何人向我解釋這一點。
我有一個正則表達式,我從互聯網上獲得了匹配URL鏈接的<a>
標籤。看起來如下:瞭解這個正則表達式
variable = re.compile('<a\s(?:.*?\s)*?href=[\'"](.*?)[\'"].*?>')
會有人請解釋我是這樣打算彭定康究竟如何來匹配<a>
標籤的內容是什麼?
我對Unix中的正則表達式有基本的理解,但這對我來說看起來太複雜了,並且非常感謝任何人向我解釋這一點。
'<a\s(?:.*?\s)*?href=[\'"](.*?)[\'"].*?>'
可以打破它。
<a
就是這樣,一個標籤的開始。\s
表示空白。(?:.*?\s)*?
意味着一個非捕獲組,重複儘可能多的次數,或根本沒有, 該組的內容是.*?
:任何東西,然後是空白。href=
就是這個標籤的一部分。[\'"]
意味着要麼'
或"
(.*?)
是您的捕獲組,捕捉任何東西。[\'"]
意味着要麼'
或"
.*?
什麼,或者什麼都不>
只是,標籤結束。這是什麼意思在英語?
<a ANYTHING href=URL>
都被忽略,而URL被捕獲。
小細節:
'
或"
(因此包括在正則表達式)。<a> ... </a>
或<a ... >
href=
是我們想要的屬性 - 這是鏈接地址。嘛@Inbar玫瑰已經回答了你的問題詳細, 但可能有一些聯繫,當你使用正則表達式得到的鏈接,這將有問題..Incase可以通過使用普通的分割函數來獲取它們,同時考慮到一般的html語法 -
a='<a href="http://www.google.com">'r
print a.split('href=')[1].split('"')[1]
>> http://www.google.com
你在你的分裂''href =''中寫道,但它不在你的例子中。這有點令人困惑。 –
@InbarRose - 對不起,這是一個錯誤..我再次編輯它。 – minocha
您是否檢查了[Python正則表達式](http://docs.python.org/2/library/ re.html)文檔?有沒有什麼特別的你不明白? –
寫出一些href標籤,並嘗試刪除正則表達式的特定部分,以查看它如何改變匹配和不匹配的內容。 – dutt
和通常必須:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – root