查找给定字符串中“1(0+)1”的所有模式| SET 2(正则表达式方法)

原文:https://www . geesforgeks . org/find-patterns-101-given-string-set-2 regular-expression-approach/

集合 1 中,我们已经讨论了对形式 1(0+)1 的模式进行计数的一般方法,其中(0+)表示 0 的任何非空连续序列。在这篇文章中,我们将讨论正则表达式对其进行计数的方法。

例:

Input : 1101001
Output : 2

Input : 100001abc101
Output : 2

下面是上述模式的正则表达式之一

10+1

因此,每当我们发现匹配时,我们就增加计数器来计算模式。由于匹配的最后一个字符总是“1”,我们必须再次从该索引开始搜索。

//Java program to count the patterns 
// of the form 1(0+)1 using Regex

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class GFG 
{
    static int patternCount(String str) 
    {
        // regular expression for the pattern
        String regex = "10+1";

        // compiling regex
        Pattern p = Pattern.compile(regex);

        // Matcher object
        Matcher m = p.matcher(str);

        // counter
        int counter = 0;

        // whenever match found
        // increment counter
        while(m.find())
        {
            // As last character of current match
            // is always one, starting match from that index
            m.region(m.end()-1, str.length());

            counter++;
        }

        return counter;
    }

    // Driver Method
    public static void main (String[] args)
    {
        String str = "1001ab010abc01001";
        System.out.println(patternCount(str));
    }
}

输出:

2

相关文章:

本文由高拉夫·米格拉尼供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用contribute.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。

如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。