You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用正则表达式混淆含单引号的密码的技术问题

解决带转义单引号的Password字符串统一替换问题

嘿,我看到你在处理包含转义单引号(比如'')的password字符串替换时遇到了瓶颈——原来的正则表达式会在遇到第一个单引号就停止匹配,没法正确处理那些内嵌了''的密码内容。别担心,咱们来搞定它!

问题根源

你之前用的[^']+是匹配任意非单引号的字符,但当密码里出现''(用来表示转义的单个单引号)时,这个表达式会在第一个'就截断,导致匹配不完整,自然没法正确替换。

正确的正则方案

我们需要调整正则,让它能识别“两个连续单引号是转义字符”这种情况,而不是把单个单引号当作结束标记。这里是适配后的代码:

import re

# 待处理字符串
input_str = "PASSWORD 'dsfad'、paSsword 'asdfa'、PAssWord 'asdrd'''、password 'asd''asdf'; password 'asdf'"

# 编译正则表达式
pattern = re.compile(r"(?i)password\s*'(?:[^']|'')*'")

# 执行替换
result = pattern.sub("password '*****'", input_str)

print(result)

正则表达式拆解

让我们拆解一下这个正则的关键部分,帮你理解为什么它能工作:

  • (?i):开启忽略大小写模式,这样能匹配PASSWORD、paSsword、PAssWord等任意大小写组合的password
  • password:匹配目标关键字(结合(?i)实现大小写不敏感)
  • \s*:匹配0个或多个空格,兼容password'xxx'或者password 'xxx'这类格式
  • ':匹配密码开头的单引号
  • (?:[^']|'')*:这是核心部分——非捕获组,匹配两种情况:
    • [^']:任意非单引号的字符
    • '':两个连续的单引号(转义后的单个单引号)
    • *:重复匹配上述内容,直到遇到单独的单引号
  • ':匹配密码结尾的单独单引号

替换效果测试

用你提供的测试字符串运行上面的代码,输出结果会是:

password '*****'、password '*****'、password '*****'、password '*****'; password '*****'

完全符合你想要的统一替换效果!

内容的提问来源于stack exchange,提问作者I am not smart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:58:46