【问题标题】:matching words containing repeating characters匹配包含重复字符的单词
【发布时间】:2013-01-27 19:54:01
【问题描述】:

这是我的正则表达式:"(?<=^|\\s)([a-z])\\1{3,}(?=\\s|$)"

我正在尝试匹配连续重复字符 > 2 个的单词。

所以wwhhaaaat bananas ffffuuuuuu this is a test 应该赶上wwhhaaaatffffuuuuuu

当我在 java 中运行这个正则表达式时,它没有捕捉到任何东西。当我运行([a-z])\\1{3,} 时,它只捕获重复的字符。所以我弄乱了部分以匹配包含字符的单词。

我该如何解决?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    试试

        Matcher m = Pattern.compile("[a-z]*([a-z])\\1{3,}[a-z]*").matcher("So wwhhaaaat bananas ffffuuuuuu this is a test");
        while(m.find()) {
            System.out.println(m.group());
        }
    

    打印

    wwhhaaaat
    ffffuuuuuu
    

    【讨论】:

    • 嘿,这行得通。你能解释一下[a-z]*。我想我必须向前看才能匹配整个单词。 [a-z]* 是怎么做到的?这不像任何字母吗?
    • 似乎合乎逻辑:任意数量的字母(0 或更多)后跟重复的 3 个(或更多)字母,后跟任意数量的字母。顺便说一句,我建议 \\w
    猜你喜欢
    • 1970-01-01
    • 2022-11-19
    • 2011-09-09
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多