首页 > 解决方案 > 正则表达式在java中的给定字符串语句中用星*屏蔽密码

问题描述

我有一个格式化为字符串的 SQL 选择查询,它在 where 子句中包含用户/密码条件。我需要通过用 屏蔽密码值来记录完整的查询*。所以需要一个正确的正则表达式来屏蔽用户/密码值*

示例 SQL:

模式1:

SELECT e.id, e.userid, e.firstname, e.lastname, e.middlename, e.nickname from emp e where e.state = 1 AND lower(e.userid) = ''"

模式2:

从订单 e 中选择 e.id、e.email、e.userid,其中 e.state = 1 AND e.userid = ''"

我已经使用了以下,但它不满足提到的两种情况

sql.replaceAll("e.userid.*\\s*=\\s*[\\p{ASCII}&&[^\\s]]*", "(e.userid) = ****")

sql.replaceAll("e.userid.*\\s*=\\s*[\\p{ASCII}&&[^\\s]]*", "(e.userid) = ****")

注意: userid 值不包含空格。它可以有字母数字。

基本上我需要帮助来匹配以下 2 模式

  1. 我希望在记录时lower(e.userid) = 'user1'的输出会更低(e.userid) = '****'

  2. 我希望e.userid = 'user1' AND的输出是e.userid = '****' AND在记录时。

标签: javaregexstring

解决方案


推荐阅读