1

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

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

匹配:

&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 解析器。

4

1 回答 1

2

我怀疑您的问题是您没有将原始字符串传递给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 字符串转义字符又是正则表达式转义字符。没有它,你必须\\在你的意思时输入你的正则表达式\,这很快就会变得混乱。

于 2017-08-06T14:42:32.253 回答