首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中的Regex :在abcdef中查找所有的_overlapping_变体(Ab)、欧元(Bc)、(De)(De)(F)

java中的Regex :在abcdef中查找所有的_overlapping_变体(Ab)、欧元(Bc)、(De)(De)(F)
EN

Stack Overflow用户
提问于 2015-02-21 20:50:30
回答 1查看 136关注 0票数 1

如果我在java中运行这个正则表达式,我将接收{ab,de,f},但是我希望接收{ab,bc,de,f}。我认为bc不能被接收,因为bc和ab有重叠的字母。如何更改默认行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-21 20:56:22

您可以尝试使用零宽度的前瞻机制,因此每次测试都会在执行测试之前将光标重置为位置。

只需遍历字符之间的所有位置,并检查是否存在匹配正则表达式的子字符串。您可以将此子字符串放置在捕获组中,并在以后访问它。

代码语言:javascript
复制
String input = "abcdef";
Pattern p = Pattern.compile("(?=(ab)|(bc)|(de)|(f))");
Matcher m = p.matcher(input);
while (m.find()){
    for (int i=1; i<=m.groupCount(); i++){
        if (m.group(i)!=null) 
            System.out.println("group ("+i+") -> "+m.group(i));
    }
}

输出:

代码语言:javascript
复制
group (1) -> ab
group (2) -> bc
group (3) -> de
group (4) -> f
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28651182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档