在键值列表正则表达式中屏蔽密码
Mask passwords in key value list regex
我有一个键值对列表:
gkketl1Pwd=SDFDSFSFD_213213#asdsad,tech1User=WQEWQQW,techPwd=sdfdsfdM9S,gkkhistPwd=FDSFDDF_WISD01#sad,render1Pwd="SADcyx12321321,213213,recoveryPwd=asdsaSA"ycNJ,9CB9PAJ2w4AbqBHB!,trustStorePwd=test,
我想记录这个字符串,但我不想打印出密码。我不想注销密码,而是想在之前屏蔽它们。
我正在使用 Python,目前使用以下表达式来屏蔽密码:
maskedValue=re.sub("([\w]*Pwd=)(.[^,]*)", lambda m: "%s*****" % m.group(1), args[1])
不幸的是,如果密码包含逗号,代码将无法正常工作。那么有谁知道如何完全屏蔽包含逗号的密码。
您可以扩展模式以匹配任何 ,
后跟 1+ 个单词字符,然后是 =
或字符串结尾:
(\w*Pwd=)([^,]*(?:,(?!\w+=|$)[^,]*)*)
^^^^^^^^^^^^^^^^^^^^^
查看 regex demo
详情
(\w*Pwd=)
- 第 1 组:零个或多个单词字符后跟 Pwd
子字符串
和一个等号
([^,]*(?:,(?!\w+=)[^,]*)*)
- 第 2 组匹配
[^,]*
- 除了 ,
个字符 之外的任何 0+ 个字符
(?:,(?!\w+=|$)[^,]*)*
- 零次或多次出现:
,(?!\w+=|$)
- ,
后面没有 1 个或多个单词字符后跟 =
符号或字符串结尾
[^,]*
- 除了 ,
个字符 之外的任何 0+ 个字符
参见 Python demo:
import re
s = 'gkketl1Pwd=SDFDSFSFD_213213#asdsad,tech1User=WQEWQQW,techPwd=sdfdsfdM9S,gkkhistPwd=FDSFDDF_WISD01#sad,render1Pwd="SADcyx12321321,213213,recoveryPwd=asdsaSA"ycNJ,9CB9PAJ2w4AbqBHB!,trustStorePwd=test,'
maskedValue=re.sub(r"(\w*Pwd=)([^,]*(?:,(?!\w+=|$)[^,]*)*)", lambda m: "{}*****".format(m.group(1)), s)
print(maskedValue)
# => gkketl1Pwd=*****,tech1User=WQEWQQW,techPwd=*****,gkkhistPwd=*****,render1Pwd=*****,recoveryPwd=*****,trustStorePwd=*****,
我有一个键值对列表:
gkketl1Pwd=SDFDSFSFD_213213#asdsad,tech1User=WQEWQQW,techPwd=sdfdsfdM9S,gkkhistPwd=FDSFDDF_WISD01#sad,render1Pwd="SADcyx12321321,213213,recoveryPwd=asdsaSA"ycNJ,9CB9PAJ2w4AbqBHB!,trustStorePwd=test,
我想记录这个字符串,但我不想打印出密码。我不想注销密码,而是想在之前屏蔽它们。
我正在使用 Python,目前使用以下表达式来屏蔽密码:
maskedValue=re.sub("([\w]*Pwd=)(.[^,]*)", lambda m: "%s*****" % m.group(1), args[1])
不幸的是,如果密码包含逗号,代码将无法正常工作。那么有谁知道如何完全屏蔽包含逗号的密码。
您可以扩展模式以匹配任何 ,
后跟 1+ 个单词字符,然后是 =
或字符串结尾:
(\w*Pwd=)([^,]*(?:,(?!\w+=|$)[^,]*)*)
^^^^^^^^^^^^^^^^^^^^^
查看 regex demo
详情
(\w*Pwd=)
- 第 1 组:零个或多个单词字符后跟Pwd
子字符串 和一个等号([^,]*(?:,(?!\w+=)[^,]*)*)
- 第 2 组匹配[^,]*
- 除了,
个字符 之外的任何 0+ 个字符
(?:,(?!\w+=|$)[^,]*)*
- 零次或多次出现:,(?!\w+=|$)
-,
后面没有 1 个或多个单词字符后跟=
符号或字符串结尾[^,]*
- 除了,
个字符 之外的任何 0+ 个字符
参见 Python demo:
import re
s = 'gkketl1Pwd=SDFDSFSFD_213213#asdsad,tech1User=WQEWQQW,techPwd=sdfdsfdM9S,gkkhistPwd=FDSFDDF_WISD01#sad,render1Pwd="SADcyx12321321,213213,recoveryPwd=asdsaSA"ycNJ,9CB9PAJ2w4AbqBHB!,trustStorePwd=test,'
maskedValue=re.sub(r"(\w*Pwd=)([^,]*(?:,(?!\w+=|$)[^,]*)*)", lambda m: "{}*****".format(m.group(1)), s)
print(maskedValue)
# => gkketl1Pwd=*****,tech1User=WQEWQQW,techPwd=*****,gkkhistPwd=*****,render1Pwd=*****,recoveryPwd=*****,trustStorePwd=*****,