Java-正则表达式-将地址替换为星号';s

Java-正则表达式-将地址替换为星号';s,java,regex,Java,Regex,正在尝试用星号替换此字符串 以下是我试图做的: 之前: 派克街100号104单元 变成: 100π**St*Un**** 如果不包含单元号,还必须包括: 例如: 之前: 派克街100号 变成: 100皮**街* 我使用:这个正则表达式来检查是否有超过1个数字 (?:\d.*){1} 字符串[]splitAddress=地址。拆分(“”) 我做错了什么?请帮忙。谢谢大家! 也许,一个类似于 (?i)^(\\d+)\\s+(\\S{2}).*?\\s+St.*?(Unit\\s+\\d+)?$

正在尝试用星号替换此字符串

以下是我试图做的:

之前: 派克街100号104单元

变成: 100π**St*Un****

  • 如果不包含单元号,还必须包括:
例如:

之前: 派克街100号

变成: 100皮**街*

我使用:这个正则表达式来检查是否有超过1个数字

(?:\d.*){1}

字符串[]splitAddress=地址。拆分(“”)


我做错了什么?请帮忙。谢谢大家!

也许,一个类似于

(?i)^(\\d+)\\s+(\\S{2}).*?\\s+St.*?(Unit\\s+\\d+)?$
也许可以调查一下


您可能希望为第三个捕获组编写一个
if
语句,该组具有
单元
。如果该组不是空的,您将为此连接另一个
*

试验 输出
如果您希望简化/更新/探索表达式,将在的右上面板中进行解释。如果您感兴趣,可以查看匹配步骤或在中修改它们。调试器演示了如何逐步使用一些示例输入字符串并执行匹配过程


星号数 如果
*
的数量是一个问题,那么您可能希望捕获所有内容,使用类似于以下表达式的表达式对此进行简单计数:

(?i)^(\d+)\s+(\S{2})(.*?)\s+St(.*?)\s*(Unit\s+\d+)?$ 
测试2 正则表达式电路 可视化正则表达式:


也许,一个类似于

(?i)^(\\d+)\\s+(\\S{2}).*?\\s+St.*?(Unit\\s+\\d+)?$
也许可以调查一下


您可能希望为第三个捕获组编写一个
if
语句,该组具有
单元
。如果该组不是空的,您将为此连接另一个
*

试验 输出
如果您希望简化/更新/探索表达式,将在的右上面板中进行解释。如果您感兴趣,可以查看匹配步骤或在中修改它们。调试器演示了如何逐步使用一些示例输入字符串并执行匹配过程


星号数 如果
*
的数量是一个问题,那么您可能希望捕获所有内容,使用类似于以下表达式的表达式对此进行简单计数:

(?i)^(\d+)\s+(\S{2})(.*?)\s+St(.*?)\s*(Unit\s+\d+)?$ 
测试2 正则表达式电路 可视化正则表达式:


多个数字正好是
\\d+
多个数字正好是
\\d+
(?i)^(\d+)\s+(\S{2})(.*?)\s+St(.*?)\s*(Unit\s+\d+)?$ 
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class RegularExpression{

    public static void main(String[] args){


        final String regex = "(?i)^(\\d+)\\s+(\\S{2})(.*?)\\s+St(.*?)\\s*(Unit\\s+\\d+)?$";
        final String string = "100 Pike St. Unit 104\n"
             + "100 Pike St.\n"
             + "100 Pike and Salmon STREET Unit 104\n"
             + "100 Pike and Salmon ST.";

        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        final Matcher matcher = pattern.matcher(string);

        while (matcher.find()) {
            System.out.println("Full match: " + matcher.group(0));
            for (int i = 1; i <= matcher.groupCount(); i++) {
                System.out.println("Group " + i + ": " + matcher.group(i));
            }
        }


    }
}
Full match: 100 Pike St. Unit 104
Group 1: 100
Group 2: Pi
Group 3: ke
Group 4: .
Group 5: Unit 104
Full match: 100 Pike St.
Group 1: 100
Group 2: Pi
Group 3: ke
Group 4: .
Group 5: null
Full match: 100 Pike and Salmon STREET Unit 104
Group 1: 100
Group 2: Pi
Group 3: ke and Salmon
Group 4: REET
Group 5: Unit 104
Full match: 100 Pike and Salmon ST.
Group 1: 100
Group 2: Pi
Group 3: ke and Salmon
Group 4: .
Group 5: null