是否可以在正则表达式中找到与字符串的特定部分匹配的所有组?
Pattern pattern = Pattern.compile("(green trousers)|(green\\s+t)");
Matcher matcher = pattern.matcher("my beautiful green trousers are red!");
while (matcher.find()) {
for (int i = 1; i <= matcher.groupCount(); i++) {
if (matcher.group(i) != null) {
System.out.println("group " + i + " matched");
}
}
}
此示例仅返回第一组作为匹配,但我也对第二组也匹配这一事实感兴趣。
最佳答案
没有直接的方法可以做到这一点,正则表达式将从左到右使用字符串,直到找到匹配项。
使用 |
意味着它将首先检查第一个替代方案,如果不匹配,则回溯并尝试第二个替代方案。在本例中,(green trousers)
匹配,因此搜索停止并返回匹配项。
关于java - 在 Java-Regex 中匹配多个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38221916/