Python正则表达不匹配,虽然它在线

时间:2017-08-06 14:15:12

标签: python regex micropython no-match

我有一个奇怪的问题。当我在线解析我的正则表达式时它工作正常,但python不匹配它。

正则表达式: ()*<div>(.*?)<\/div>()*<div>(.*?)<\/div><div>(.*?)</div>

toMatch:

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

这些都不与python匹配,但在线(http://regexr.com/https://pythex.org/

这只是我想要的一小部分。但我想要的是div内的数据。

编辑: 我在esp8266上使用micropython。我很有限,不能使用HTML解析器。

1 个答案:

答案 0 :(得分: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字符串转义字符又是正则表达式转义字符。如果没有它,你必须在你的正则表达式\\中加\并且很快就会变得混乱。