RegEx的结果不包括另一个RegEx的结果。例如,如果我使用模式
[a-z&&[^aeiou]]{2}
我尝试匹配 bcd ,匹配将是 {bc} 而不是 {bc,cd} 。
我是用Java做的。
答案 0 :(得分:2)
反复使用Matcher.find(int start)
和Matcher.start()
来查找下一个要查找的String索引。
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());
}
答案 1 :(得分:2)
您可以通过涉及捕获组的前瞻来实现这一目标:
(?=([a-z&&[^aeiou]]{2})).
您需要一个涉及Matcher.find
的循环,并且每次使用group(1)
查询匹配器以获得您的匹配。主要的正则表达式匹配本身是无关紧要的,应该被忽略。