2016-07-10 47 views
-1

我是python的新手。我正在通過gitHub上的存儲庫,並且我看到以下代碼行可以從網頁中提取所有網址。我理解正則表達式和捕獲組,但是我不明白爲什麼單引號中包含額外的雙引號?重新表達式中的單引號內的雙引號(python)

links = re.findall('"((http|ftp)s?://.*?)"', html) 

也就是說,它與下面的代碼有什麼不同?

links = re.findall('((http|ftp)s?://.*?)', html) 

我嘗試過試驗,看到只有第一個正確的URL匹配URL,但第二個沒有。但我不明白爲什麼。

任何幫助表示讚賞。

謝謝。

+0

在http://pythex.org/試試吧。或者只是製作一些測試字符串並在解釋器中試用。 – wwii

+0

查看模式的最佳工具是[regex101.com](http://regex101.com)。 –

+0

我沒有找到我的問題的重複。你能指點我的確切鏈接嗎? @WiktorStribiżew – nilanjanaLodh

回答

1

雙引號是正則表達式的一部分。他們確保模式只有在實際上被引號包圍時才匹配;所以foo bar http://whatever.com不會匹配,但<a href="http://whatever.com">會。

注意這是一種非常脆弱的做事方式,因爲單引號在HTML中也是有效的,但是與正則表達式不匹配。

+0

非常感謝。這回答了我的問題:) – nilanjanaLodh