How to match a pattern and String without using regular expressions in Python
Hello learners, here we are going to learn how to match a pattern and string without regular expressions (regex) in Python. Some may get wrong in understanding the title. Let us see this example to make it simple.
Example-1:
String : BigBunnyBig Pattern: FGF Output: Pattern Found f - BIG G - Bunny
Example-2:
String : BigBunnyBig Pattern: FG Output: Pattern not matched
Now it is clear about pattern matching. Let’s get into the implementation.
The logic is that separate the string into words by the conditions like uppercase or space separated words etc. you may get different ideas to separate. that’s up to your choice.
Implementation
def pattern_matching(str,pattern,str_len,pat_len):
#if length of pattern is more than length of string,
#then the pattern doesn't matches with string
if(str_len<pat_len):
return False
#if length of string and pattern is 0 then we set it to match
if(str_len==0 and pat_len==0):
return True
#if one is empty and the other is entered then it is mismatched
if (str_len == 0 or pat_len == 0):
return False
#check if string is space separated one or not
# if yes then split() function can be used. it just separate the string with the space
#if no check the else condition
if(str.find(' ')!=-1):
str_list=str.split()
else:
#check for every characters and check for uppercase letters and add it to the list str_list
splitted_words = [[str[0]]]
for i in str[1:]:
if i.isupper() and splitted_words[-1][-1].islower():
splitted_words.append(list(i))
else:
splitted_words[-1].append(i)
str_list=[''.join(word) for word in splitted_words]
#separate the pattern with no repetition for easy logic purpose
#those are stored in pat_list
pat_list = []
for i in pattern:
if(i not in pat_list):
pat_list.append(i)
#like pattern storing the separated string with no repetition
# store that with in the dictionary with pattern characters as corresponding keys
j=0
dict = {}
for i in pat_list:
while(j<str_len):
dict[i]=str_list[j]
j+=1
break
#check for matching conditions
#if characters of pattern matches with keys in the dictionary
#then store that values in separate list output
output=[]
for i in pattern:
if(i in dict.keys()):
output.append(dict[i])
#if output lined with the pattern matches with string
#then it matches else not
if(output==str_list):
print(dict)
return True
else:
return False
# Example string and pattern
str="CodeSpeedyCode"
pattern="MCM"
#check for matching conditions string and patterns
if(pattern_matching(str,pattern,len(str),len(pattern))):
#True conditions
print("Pattern Matching")
else:
#false conditons
print("There is no matching found")Output:
{'M': 'Code', 'C': 'Speedy'}
Pattern MatchingLet’s have this
str="CodeSpeedy" pattern="MCM"
Output:
There is no matching found
Testcase3:
str="Code Speedy" pattern="MC"
Output:
{'G': 'Code', 'F': 'Speedy'}
Pattern MatchingAlso read: re.search vs re.match in Python
Leave a Reply