我有一个奇怪的问题。当我在线解析我的正则表达式时它工作正常,但python不匹配它。
正则表达式:
()*<div>(.*?)<\/div>()*
或<div>(.*?)<\/div>
或<div>(.*?)</div>
toMatch:
<Storage {}>86400<div>Uhrzeit in Sekunden: 65567</div><div>Timer: 20833</div>
这些都不与python匹配,但在线(http://regexr.com/或https://pythex.org/)
这只是我想要的一小部分。但我想要的是div内的数据。
编辑: 我在esp8266上使用micropython。我很有限,不能使用HTML解析器。
答案 0 :(得分:1)
我怀疑你的问题是你没有将原始字符串传递给re.compile()
。如果我这样做,我得到你想要的东西:
>>> rx = re.compile(r"<div>(.*?)<\/div>")
>>> rx.findall("<Storage {}>86400<div>Uhrzeit in Sekunden: 65567</div><div>Timer: 20833</div>")
>>> ['Uhrzeit in Sekunden: 65567', 'Timer: 20833']
您需要一个原始字符串,因为\
既是Python字符串转义字符又是正则表达式转义字符。如果没有它,你必须在你的正则表达式\\
中加\
并且很快就会变得混乱。