我需要一些建议才能让我的正则表达式像预期的那样工作。对于这个question来说,这是一个扩展的问题。
我想用"xxxx“和"zzzz”替换所有密码和密钥。
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)。
最后,这应该从上面的例子中得出。
message = test&password=xxxx password=xxxx and my secret-key=zzzz should not be logged.发布于 2020-08-06 11:43:18
如果“任意数量的字符和特殊字符可以放在键前面”,那么我认为您最好显式地匹配您的键。例如:
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)这将产生以下结果:
test&password=xxxx password=xxxx and my secret-key=zzzz should not be logged.https://stackoverflow.com/questions/63282597
复制相似问题