假設我們有這樣的:在一個字符串中查找多個正則表達式
html = 'http://example.com'
regex = '<(\d{0,2})>'
regex1 = '<span>(.+?)</span>'
p = re.compile(regex)
p1 = re.compile(regex1)
是否有可能re.findall
都p
和p1
一個findall
語句中?
假設我們有這樣的:在一個字符串中查找多個正則表達式
html = 'http://example.com'
regex = '<(\d{0,2})>'
regex1 = '<span>(.+?)</span>'
p = re.compile(regex)
p1 = re.compile(regex1)
是否有可能re.findall
都p
和p1
一個findall
語句中?
首先:您通常希望避免使用正則表達式來解析HTML。您確實想使用HTML解析器。 BeautifulSoup讓你尋找的元素與包含(甚至使用正則表達式匹配在HTML中發現特定方面)
您可以結合使用|
管的正則表達式有一定的文字,一組中:
p_or_p1 = re.compile('(?:{}|{})'.format(p, p1))
感謝您的HTML解析器建議。我一定會試着學習這個,但直到我做到這一點,我至少在當前的項目中遇到了正則表達式。順便說一句。你能否推薦任何有價值的網址到HTML解析器的東西,除了官方文檔? – nutship 2013-03-11 14:38:42
我不能推薦任何BeautifulSoup教程,因爲我從來沒有讀過一個。 :-)雖然這個文檔很簡單,你可以隨時查看這裏的問題(我回答了相當多的BS問題)。 – 2013-03-11 14:41:16
Couldn你只是用'regex ='(<(\d{0,2})> | (。+?))'? – 2013-03-11 14:15:13
不確定這會起作用。我需要找到兩者(總是存在兩個),當python接近第一個並評估爲True時,則會跳過我猜測的第二個語句。 – nutship 2013-03-11 14:20:02
哦,我明白了...在這種情況下,我不確定Python文檔是否表示findall會返回所有不重疊的匹配項。可能有一種方法,但我不知道其中一種 - 如果沒有,可以考慮合併這兩個結果數組嗎? – 2013-03-11 14:32:39