思路比较清晰,实现比较简单的一种方法。
# 正则表达式中"."和"*"的实现
class Regular(object):
def re_match(self,str1,str2):
list1 = list(str1)
list2 = list(str2)
count = 0
while list2:
#匹配成功的四种情况
if list2[-1] == list1[-1] or list1[-1] == '.' or (
list1[-1] == '*' and (list1[-2] == list2[-1] or list1[-2] == '.')):
list2.pop(-1)
if list1[-1] != '*':
list1.pop(-1)
count += 1
else:
break
if count == len(str2):
return True
else:
return False
re=Regular()
if re.re_match('a*s.*d.f','aaaaskkkdsf'):
print('匹配')
else:
print('不匹配')