3

RegEx 的结果不包括另一个 RegEx 的结果。例如,如果我使用模式

[a-z&&[^aeiou]]{2}

我尝试匹配bcd,匹配将是{bc}而不是{bc, cd}

我正在用 Java 做这个。

4

2 回答 2

2

反复使用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());
}
于 2013-05-12T10:08:41.487 回答
2

您可以通过涉及捕获组的前瞻来获得此信息:

(?=([a-z&&[^aeiou]]{2})).

您每次都需要一个涉及Matcher.find并查询匹配器的循环group(1)来获得匹配。主要的正则表达式匹配本身是无关紧要的,应该被忽略。

于 2013-05-12T10:08:51.100 回答