我正在尝试编写一个正则表达式来屏蔽下面的字符串。下面的例子。
输入
A1../D//FASDFAS--DFASD//.F
输出(跳过前五个和后两个字母数字)
A1../D//FA***********D//.F
我正在尝试使用下面的正则表达式 ([A-Za-z0-9]{5})(.*)(.{2})
任何帮助将不胜感激。
最佳答案
您可以通过将 Pattern
和 Matcher
与 regex 一起使用来解决您的问题匹配多个组:
String str = "A1../D//FASDFAS--DFASD//.F";
Pattern pattern = Pattern.compile("(.*?\\/\\/..)(.*?)(.\\/\\/.*)");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
str = matcher.group(1)
+ matcher.group(2).replaceAll(".", "*")
+ matcher.group(3);
}
详情
(.*?\\/\\/..)
第一个组匹配所有内容,直到//
(.*?)
第二组匹配第一组和第三组之间的所有内容(.\\/\\/.*)
第三组匹配//
之前的最后一个字符之后直到字符串末尾的所有内容
输出
A1../D//FA***********D//.F
我认为这个解决方案更具可读性。
关于java - 使用正则表达式屏蔽以下格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59486182/