是否可以在正则表达式中找到与字符串的特定部分匹配的所有组?
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)
匹配,因此搜索停止并返回匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句