【问题标题】:Python regex help :)? [duplicate]Python正则表达式帮助:)? [复制]
【发布时间】:2018-11-05 16:13:21
【问题描述】:

我正在尝试匹配字符串“onlin”中的最后一个字母,如果它与离线单词匹配,则将其替换。没有运气。请给点建议,干杯。

import mitmproxy
import re

def response(flow):
    old = b'Onlin\w{1}'
    new = b'Offline'
    flow.response.content = flow.response.content.replace(old, new)

【问题讨论】:

  • 如果您删除Onlin\w{1}’ 中的 字符是否有效?
  • 它是不小心进去的,没用。
  • 不清楚你在问什么。你能解释一下预期的输出是什么吗?
  • 在 flow.response.content.replace 中,变量“old”的值被变量“new”的值替换。我试图使用正则表达式将变量 old 的值与最后一个字符作为通配符进行匹配。但它不起作用。基本上是 'onlin' + [a-z, 0-9]

标签: python regex wildcard mitmproxy


【解决方案1】:

我猜你使用了错误的替换函数。试试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)

【讨论】:

  • 效果很好,干杯,我对此很陌生
【解决方案2】:

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'

【讨论】:

  • 这不起作用,但感谢您抽出宝贵时间。
猜你喜欢
  • 2011-06-18
  • 1970-01-01
  • 2023-03-26
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
相关资源
最近更新 更多