我遇到了与 this link 相同的问题
但具有多种模式。我的正则表达式是这样的:
Pattern word = Pattern.compile("([\w]+ [\d]+)|([\d]+ suite)|([\w]+ road)");
如果我的示例文本是,
XYZ Road 123 Suite
我的愿望输出是,
XYZ Road 123
123 suite
但是我越来越
XYZ Road 123
仅。
提前致谢!
最佳答案
您可以尝试以下使用正向先行断言的正则表达式。
(?=(\b\w+ Road \d+\b)|(\b\d+ suite\b))
String s = "XYZ Road 123 Suite";
Matcher m = Pattern.compile("(?i)(?=(\\b\\w+ Road \\d+\\b)|(\\b\\d+ suite))").matcher(s);
while(m.find())
{
if(m.group(1) != null) System.out.println(m.group(1));
if(m.group(2) != null) System.out.println(m.group(2));
}
输出:
XYZ Road 123
123 Suite
关于java - 在 Java 正则表达式中获取多个模式的重叠匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27656377/