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'
Другие вопросы по тегам