尝试用星号替换此字符串。
这就是我想要做的:
之前: 100派克街104号部队
成为: 100 Pi ** St * Un ** ***
例如:
之前: 派克街100号。
成为: 100 Pi ** St *
我正在使用:此正则表达式检查是否有超过1位数字
(?:\ d。*?){1}
String [] splitAddress = address.split(“”);
Pattern pattern = Pattern.compile("(?:\\d.*?){1}"); Matcher matcher = pattern.matcher(address); boolean isMatched = matcher.matches(); System.out.println(isMatched);
我在这里做错了什么?请帮忙。谢谢!
答案 0 :(得分:0)
也许,类似的表达,
(?i)^(\\d+)\\s+(\\S{2}).*?\\s+St.*?(Unit\\s+\\d+)?$
可以查看。
您将要为具有if
的第三个捕获组编写一个Unit
语句。如果该组不为空,那么您将为此串联另一个*
。
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.*?(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 String subst = "$1 $2** St*";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
final String result = matcher.replaceAll(subst);
System.out.println(result);
}
}
100 Pi** St*
100 Pi** St*
100 Pi** St*
100 Pi** St*
如果您想简化/更新/探索表达式,请在regex101.com的右上角进行解释。如果您有兴趣,可以观看匹配的步骤或在this debugger link中进行修改。调试器演示了a RegEx engine如何逐步使用一些示例输入字符串并执行匹配过程的过程。
如果*
的数目是个问题,那么您可能想捕获所有内容,并使用类似于以下的表达式对此做一些简单的计数:
(?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
jex.im可视化正则表达式: