#!/usr/bin/env python # coding: utf-8 # ## ``Q8.`` ## # # ## ```Using Regular Expressions, develop a Python program to``` ## # # ## ```a) Identify a word with a sequence of one upper case letter followed by lower case letters. ``` ## # # ## ```b) Find all the patterns of '1(0+)1' in a given string. ``` ## # # ## ```c) Match a word containing 'z' followed by one or more o's.``` ## # # ## ```Prompt the user for input. ``` ## # ## ----------------------------------------------------------------------------------------------------------------------------- # **Approach to identify a sequence of one upper case letter followed by lower case letters** # # To check if the sequence of one upper case letter followed by lower case letters we use regular expression ` [A-Z]+[a-z]+$` # # **Approach to find the patterns of `1(0+)1` in a given string** # # A string contains patterns of the form `1(0+)1` where `(0+)` represents any non-empty consecutive sequence of 0's. # # First compile a pattern which follows `1(0+)1` using re.compile(regex) method. Search a first sub-string in original string which follows `1(0+)1` pattern using `pattern.search(string)` method. # # `substr = pattern.search(string)` returns `None` if it doesn't find the given regex as sub-string in original string otherwise it returns first matched sub-string which follows `1(0+)1` pattern. # # `substr.start()` gives us starting index of matched regex and `substr.end()` gives us ending index of matched regex. # 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. *__The patterns are allowed to overlap.__* # # **Approach to match a word consisting of `z` followed by one or more `o's`** # # Compile a pattern which follows `zo+\w*`, that matches a word which contains `'z'` followed by one or more `o's`. # # Then pass a string to the `findall()` method. This method returns the list of the matched strings. If the length of this list is equal to zero then it doesn't contain a matched string. # # `\w` `->` `represents any letter, numeric digit, or the underscore character.` # # `*` `->` `means zero or more occurrence of the character.` # # `+` `->` `means one or more occurrence of the character.` # ## ----------------------------------------------------------------------------------------------------------------------------- # In[19]: import re # Function to Find all the patterns of "1(0+)1" in a given string def check_uc_lc_pattern(user_input): # regex pattern = re.compile("[A-Z]+[a-z]+$") # searching pattern if pattern.search(user_input): print("String pattern match success \n") else: print("String fails the pattern \n") def count_pattern(user_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 at least 1 or more zeros in between count = 0 pattern = re.compile("10+1") substr = pattern.search(user_input) # search for regex in original string until 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 of the pattern user_input = user_input[(substr.end() - 1) :] substr = pattern.search(user_input) print(f"The number of times the pattern appears in the string is {count} \n") def z_followed_by_o(user_input): # Regex \w * zo+\w * will match text that contains 'z', followed by one or more 'o' pattern = re.compile("zo+\w*") # The findall() method returns all matching strings of the regex pattern match_object = pattern.findall(user_input) # If length of match_object is not equal to zero then it contains matched string if len(match_object) != 0: print("String pattern match success \n") else: print("No match \n") def menu(): while True: print( "1 --> Identify a word with a sequence of one upper case letter followed by lower case letters" ) print("2 --> Find all the patterns of '1(0+)1' in a given string") print("3 --> Match a word containing 'z' followed by one or more o's") print("4 --> Exit the program") choice = int(input("Enter a number to perform any of the operation: ")) print("\n") if choice == 1: user_input = input( "Enter a string with a sequence of Upper and Lower case letters: " ) print("\n") check_uc_lc_pattern(user_input) elif choice == 2: user_input = input("Enter a string in the form of 1(0+)1 pattern: ") print("\n") count_pattern(user_input) elif choice == 3: user_input = input("Enter a string: ") print("\n") z_followed_by_o(user_input) else: break # Main if __name__ == "__main__": menu()