Java正则表达式 - 重叠匹配 [英] Java regex - overlapping matches
本文介绍了Java正则表达式 - 重叠匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在以下代码中:
public static void main(String[] args) {
List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile("\\d+\\D+\\d+").matcher("2abc3abc4abc5");
while (m.find()) {
allMatches.add(m.group());
}
String[] res = allMatches.toArray(new String[0]);
System.out.println(Arrays.toString(res));
}
结果是:
[2abc3, 4abc5]
I我希望它是
[2abc3, 3abc4, 4abc5]
如何实现?
推荐答案
让匹配器尝试从后者开始下一次扫描 \d +
。
Make the matcher attempt to start its next scan from the latter \d+
.
Matcher m = Pattern.compile("\\d+\\D+(\\d+)").matcher("2abc3abc4abc5");
if (m.find()) {
do {
allMatches.add(m.group());
} while (m.find(m.start(1)));
}
这篇关于Java正则表达式 - 重叠匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文