2017-08-06 81 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字符串转义字符和正则表达式转义字符。没有它,你必须将\\置于你的正则表达式中,当你的意思是\,这很快就会变得混乱。