Skip to content
Related Articles

Related Articles

Improve Article
Find all the patterns of “1(0+)1” in a given string using Python Regex
  • Last Updated : 29 Dec, 2020

A string contains patterns of the form 1(0+)1 where (0+) represents any non-empty consecutive sequence of 0’s. Count all such patterns. The patterns are allowed to overlap.

Note : It contains digits and lowercase characters only. The string is not necessarily a binary. 100201 is not a valid pattern.

Examples:

Input : 1101001
Output : 2

Input : 100001abc101
Output : 2

We have existing solution for this problem please refer Find all the patterns of “1(0+)1” in a given string link. Another set containing similar solution using regex in java is also published.



We will solve this problem quickly in python using Regex. Approach is very simple :

  1. Search a first sub-string in original string which follows ’10+1′ pattern using re.search(regex,string) method.
  2. substr = re.search(regex,string) return None if it doesn’t find given regex as sub-string in original string otherwise it returns first matched sub-string which follows ’10+1′ pattern. substr.start() gives us starting index of matched regex and substr.end() gives us ending index of matched regex.
  3. Whenever we find regex as sub-string then increase count by 1 and again search for given regex starting from ending index of previous sub-string.




# Python program to Find all the patterns 
# of “1(0+)1” in a given string using Python Regex
  
import re
  
# Function to Find all the patterns
# of “1(0+)1” in a given string
def extract(input):
  
    # search regex '10+1' in original string
    # search() function return first occurrence 
    # of regex '10+1' otherwise None
    # '10+1' means sub-string starting and ending with 1
    # and atleast 1 or more zeros in between
    count=0
    substr = re.search('10+1',input)
      
    # search for regex in original string 
    # untill we are done with complete string
    while substr!=None:
        # if we find any occurrence then increase count by 1
        count=count+1
          
        # find next occurrence just after previous 
        # sub-string
        # for first occurrence 101, substr.start()=1
        # substr.end()=4
        input = input[(substr.end()-1):]
        substr = re.search('10+1',input)
    print (count)
  
# Driver program
if __name__ == "__main__":
    input = '1101001'
    extract(input)

Output:

2

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :