2013-03-11 84 views
1

假設我們有這樣的:在一個字符串中查找多個正則表達式

html = 'http://example.com' 
regex = '<(\d{0,2})>' 
regex1 = '<span>(.+?)</span>' 
p = re.compile(regex) 
p1 = re.compile(regex1) 

是否有可能re.findallpp1一個findall語句中?

+0

Couldn你只是用'regex ='(<(\d{0,2})> | (。+?))'? – 2013-03-11 14:15:13

+0

不確定這會起作用。我需要找到兩者(總是存在兩個),當python接近第一個並評估爲True時,則會跳過我猜測的第二個語句。 – nutship 2013-03-11 14:20:02

+0

哦,我明白了...在這種情況下,我不確定Python文檔是否表示findall會返回所有不重疊的匹配項。可能有一種方法,但我不知道其中一種 - 如果沒有,可以考慮合併這兩個結果數組嗎? – 2013-03-11 14:32:39

回答

1

首先:您通常希望避免使用正則表達式來解析HTML。您確實想使用HTML解析器。 BeautifulSoup讓你尋找的元素與包含(甚至使用正則表達式匹配在HTML中發現特定方面)

您可以結合使用|管的正則表達式有一定的文字,一組中:

p_or_p1 = re.compile('(?:{}|{})'.format(p, p1)) 
+0

感謝您的HTML解析器建議。我一定會試着學習這個,但直到我做到這一點,我至少在當前的項目中遇到了正則表達式。順便說一句。你能否推薦任何有價值的網址到HTML解析器的東西,除了官方文檔? – nutship 2013-03-11 14:38:42

+0

我不能推薦任何BeautifulSoup教程,因爲我從來沒有讀過一個。 :-)雖然這個文檔很簡單,你可以隨時查看這裏的問題(我回答了相當多的BS問題)。 – 2013-03-11 14:41:16

相關問題