RegEx 的结果不包括另一个 RegEx 的结果。例如,如果我使用模式
[a-z&&[^aeiou]]{2}
我尝试匹配bcd,匹配将是{bc}而不是{bc, cd}。
我正在用 Java 做这个。
反复使用Matcher.find(int start)
andMatcher.start()
找出接下来要查找的字符串索引。
String haystack="bcd";
Matcher m = pattern.matcher(haystack);
int lookIndex=0;
while(lookIndex < haystack.length() && m.find(lookIndex)) {
lookIndex=m.start()+1;
System.out.println("Found " + m.group());
}
您可以通过涉及捕获组的前瞻来获得此信息:
(?=([a-z&&[^aeiou]]{2})).
您每次都需要一个涉及Matcher.find
并查询匹配器的循环group(1)
来获得匹配。主要的正则表达式匹配本身是无关紧要的,应该被忽略。