首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用re.sub替换字符串中的子字符串?

使用re.sub替换字符串中的子字符串?
EN

Stack Overflow用户
提问于 2020-08-06 11:28:02
回答 1查看 85关注 0票数 0

我需要一些建议才能让我的正则表达式像预期的那样工作。对于这个question来说,这是一个扩展的问题。

我想用"xxxx“和"zzzz”替换所有密码和密钥。

代码语言:javascript
复制
import re
d = {"password": "xxxx", "secret-key": "zzzz"}

def replace(x):
  key = x.group(1)
  val = d.get(key, x.group(2))
  return f"{key}={val}"

message = "test&password=secure password=secure and my secret-key=securekey should not be logged."
re.sub(r"(?<=???)(\S+)=(\S+)", replace, message)

任意数量的字符和特殊字符可以放置在键的前面。在我上面的例子中,'test&‘在我正在寻找的密钥“密码”前面。但是,您要查找的密钥也有可能在空白后开始(例如,password=secure)。

最后,这应该从上面的例子中得出。

代码语言:javascript
复制
message = test&password=xxxx password=xxxx and my secret-key=zzzz should not be logged.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-06 11:43:18

如果“任意数量的字符和特殊字符可以放在键前面”,那么我认为您最好显式地匹配您的键。例如:

代码语言:javascript
复制
import re
d = {"password": "xxxx", "secret-key": "zzzz"}

message = "test&password=secure password=secure and my secret-key=securekey should not be logged."

for k, mask in d.items():
    message = re.sub(f'(?<={k}=)(\\S+)', mask, message)

print(message)

这将产生以下结果:

代码语言:javascript
复制
test&password=xxxx password=xxxx and my secret-key=zzzz should not be logged.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63282597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档