2017-08-06 41 views
0

我有一個奇怪的問題。當我在網上解析我的Regex時,它工作正常,但python不匹配它。Python正則表達式不匹配,雖然它在線

正則表達式: ()*<div>(.*?)<\/div>()*<div>(.*?)<\/div><div>(.*?)</div>

toMatch:

&lt;Storage {}&gt;86400<div>Uhrzeit in Sekunden: 65567</div><div>Timer: 20833</div> 

沒有這些比賽與蟒蛇,但在網上做(http://regexr.com/https://pythex.org/

這是隻有很短的一部分我想要得到什麼。但是我想要的是div內的數據。編輯: 我在esp8266上使用micropython。我有限,無法使用HTML解析器。

+1

人們,停止使用正則表達式來解析HTML!存在HTML解析器是有原因的。另外,你爲什麼使用空的捕獲組?你需要在Python中使用'findall',而不是'match'。 – DeepSpace

+1

對不起,我確切的。我只是想寫得不那麼詳細。我在esp8266上使用micropython。我在那裏受到限制。 –

回答

1

我懷疑你的問題是你沒有傳遞一個原始字符串到re.compile()。如果我這樣做,我得到了我想你想:

>>> rx = re.compile(r"<div>(.*?)<\/div>") 
>>> rx.findall("&lt;Storage {}&gt;86400<div>Uhrzeit in Sekunden: 65567</div><div>Timer: 20833</div>") 
>>> ['Uhrzeit in Sekunden: 65567', 'Timer: 20833'] 

你需要一個原始字符串,因爲\既是Python字符串轉義字符和正則表達式轉義字符。沒有它,你必須將\\置於你的正則表達式中,當你的意思是\,這很快就會變得混亂。