我在日志中有一个字符串,我想根据正则表达式屏蔽值。
例如:
"email":"[email protected]", "phone":"1111111111", "text":"sample text may contain email [email protected] as well"
正则表达式应该屏蔽
所需的输出:
"email":"*****", "phone":"*****", "text":"sample text may contain email ***** as well"
我能够做的是单独屏蔽电子邮件和电话,但不屏蔽“文本”后字符串内的电子邮件 ID。
到目前为止开发的正则表达式:
(?<=\"(?:email|phone)\"[:])(\")([^\"]*)(\")
由于您没有通过不匹配双引号来匹配第一部分中的电子邮件地址,因此您也可以通过不匹配双引号来匹配文本中的电子邮件地址。
一种方法是使用环视和交替来获得匹配。然后将匹配替换为*****
请注意,您不必转义双引号,并且可以在不使用字符类的情况下编写冒号。
(?<="(?:phone|email)":")[^"]+(?=")|[^@"\s]+@[^@"\s]+
解释
(?<="(?:phone|email)":")
断言左边的是“电话”:“或”电子邮件“:”[^"]+(?=")
不匹配双引号并确保末尾有双引号|
或者[^@"\s]+@[^@"\s]+
匹配一个email like
通过使用一个否定的字符类匹配不是一个双引号或图案@查看正则表达式演示
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句