Python regex помогите:)?
Я пытаюсь найти совпадение, последняя буква в строке 'onlin' как любая, а затем заменить ее, если она совпадает со словом offline. Неудачно. Пожалуйста, дайте совет, ура.
import mitmproxy
import re
def response(flow):
old = b'Onlin\w{1}'
new = b'Offline'
flow.response.content = flow.response.content.replace(old, new)
2 ответа
Решение
Я полагаю, вы используете не ту функцию для замены. Пытаться re.sub
,
def response(flow):
old = b'Onlin\w'
new = b'Offline'
# https://docs.python.org/3/library/re.html#re.sub
flow.response.content = re.sub(old, new, flow.response.content)
str.replace()
не распознает регулярные выражения.
Чтобы выполнить подстановку с помощью регулярного выражения, используйте re.sub().
Шаблон Onlin.
соответствует любой строке, которая начинается с Onlin и заканчивается любым символом.
import re
old = re.compile('Onlin.')
def response(flow):
new = 'Offline'
flow.response.content = old.sub(new, flow.response.content)
Пример:
>>> old = re.compile("Onlin.")
>>> old.sub(new, "Onlin Onlina Online")
'offlineoffline offline'