Python Regex не соответствует, хотя это онлайн

У меня странная проблема. Когда я анализирую свой Regex онлайн, он работает нормально, но 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.

РЕДАКТИРОВАТЬ: я использую micropython на esp8266. Я ограничен и не могу использовать анализатор HTML.

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']

Вам нужна необработанная строка, потому что \ это как escape-символ строки Python, так и escape-символ regex. Без него надо поставить \\ в вашем регулярном выражении, когда вы имеете в виду \ и это очень быстро сбивает с толку.

Другие вопросы по тегам