Python Regex не соответствует, хотя это онлайн
У меня странная проблема. Когда я анализирую свой Regex онлайн, он работает нормально, но 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.
РЕДАКТИРОВАТЬ: я использую micropython на esp8266. Я ограничен и не могу использовать анализатор HTML.
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']
Вам нужна необработанная строка, потому что \
это как escape-символ строки Python, так и escape-символ regex. Без него надо поставить \\
в вашем регулярном выражении, когда вы имеете в виду \
и это очень быстро сбивает с толку.