Java 使用正则表达式从字符串中删除一些额外的文本

Java 使用正则表达式从字符串中删除一些额外的文本,java,regex,sms,masking,Java,Regex,Sms,Masking,我正在构建SMS网关,在将SMS消息持久保存到数据库之前,我想在其中屏蔽任何凭据信息(如密码) 代码如下: String message = "Your password is [MASK:1234]!"; boolean bMasked = message.matches("(\\[MASK:)*(\\])"); String plainText = message.replaceAll(..., ""); String withStars = message.replaceAll("...

我正在构建SMS网关,在将SMS消息持久保存到数据库之前,我想在其中屏蔽任何凭据信息(如密码)

代码如下:

String message = "Your password is [MASK:1234]!";

boolean bMasked = message.matches("(\\[MASK:)*(\\])");
String plainText = message.replaceAll(..., "");
String withStars = message.replaceAll("...", "*");

System.out.println("bMasked: " + bMasked);
System.out.println("plainText: " + plainText);
System.out.println("withStars:  " + withStar);
我对正则表达式的了解很差,因此如果可能,我需要您的帮助以获得以下输出:

bMasked: true
plainText: Your password is 1234!
withStars: Your password is ****!
给你:

bMasked: true
plainText: Your password is 1234!
withStars:  Your password is ******!

你真的想存储尽可能多的星星作为密码字符吗?这是不安全的。它给任何获取此信息的人提供了太多的提示来破解密码。@m0skit0+1你是对的,它的长度不应该相同。如果要屏蔽密码,为什么要在SMS中包含关于密码的那一行(谢天谢地)?@KJETH直到纯文本将作为SMS消息发送到客户端,之后,SMS消息将被保存到数据库中,其他工具通过database.Hmmm,
检查SMS消息的状态
不是掩码的一部分,如果我移除它,则
bmask
false
@Eng.Fouad match意味着“当且仅当此字符串与给定正则表达式匹配时返回:true”
也是字符串的一部分。你想要什么?
bmask
将是
真的
,如果且仅当
[MASK:blah]
存在
blah
可以是任何内容,也可以包含空格。
bMasked: true
plainText: Your password is 1234!
withStars:  Your password is ******!