我正在尝试使用模式\ w(?= \ w)使用以下内容查找2个连续字符, 虽然前瞻工作,我想输出实际匹配但不消耗它
这是代码:
Pattern pattern = Pattern.compile("\\w(?=\\w)");
Matcher matcher = pattern.matcher("abcde");
while (matcher.find())
{
System.out.println(matcher.group(0));
}
我想要匹配的输出: ab bc cd de
但我只能 a b c d e
任何想法?
答案 0 :(得分:4)
前瞻的内容宽度为零,因此它不属于组零。要做你想做的事,你需要明确地捕捉前瞻的内容,然后重建组合文本+前瞻,如下所示:
Pattern pattern = Pattern.compile("\\w(?=(\\w))");
// ^ ^
// | |
// Add a capturing group
Matcher matcher = pattern.matcher("abcde");
while (matcher.find()) {
// Use the captured content of the lookahead below:
System.out.println(matcher.group(0) + matcher.group(1));
}