java - 使用正则表达式屏蔽以下格式

标签 java regex

我正在尝试编写一个正则表达式来屏蔽下面的字符串。下面的例子。

输入

A1../D//FASDFAS--DFASD//.F

输出(跳过前五个和后两个字母数字)

A1../D//FA***********D//.F

我正在尝试使用下面的正则表达式 ([A-Za-z0-9]{5})(.*)(.{2})

任何帮助将不胜感激。

最佳答案

您可以通过将 PatternMatcherregex 一起使用来解决您的问题匹配多个组:

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/

相关文章:

java - 什么时候需要 Some<E extends Some<E>> 而不是 Some<E extends Some>?

java - 如何修复 Google 移动广告集成错误

java - 在运行时启动 jms 消息驱动的 channel 适配器

jquery - 重复的正则表达式组

c# - 除 "www"之外的任何字符串的正则表达式? (子域)

java - 最终变量是否在每个实例的基础上占用内存?

java - 如何在第一次出现字符时停止匹配器?

python 正则表达式: expression to match number and letters

regex - 仅匹配第一次出现的短语

Java RESTful 返回对象内部的对象,将其作为 toString 而不是转换为 JSON