19-正则表达式匹配
发布时间:2020-12-14 05:35:53 所属栏目:百科 来源:网络整理
导读:题目:请实现一个函数用来匹配包含‘.‘和‘*‘的正则表达式。模式中的字符‘.‘表示任意一个字符,而‘*‘表示它前面的字符可以出现任意次(含0次)。 def re_match(string,pattern): if len(string) ==0 and len(pattern)==0: return True if len(string)!
题目:请实现一个函数用来匹配包含‘.‘和‘*‘的正则表达式。模式中的字符‘.‘表示任意一个字符,而‘*‘表示它前面的字符可以出现任意次(含0次)。 def re_match(string,pattern): if len(string) ==0 and len(pattern)==0: return True if len(string)!=0 and len(pattern)==0 or (len(string)==0 and len(pattern)!=0): return False if len(pattern)>1 and pattern[1] ==‘*‘: if pattern[0] == string[0] or (pattern[0]==‘.‘ and len(string)!=0): return re_match(string[1:],pattern[2:]) or re_match(string[1:],pattern) or re_match(string,pattern[2:]) else: return re_match(string,pattern[2:]) if string[0]==pattern[0] or (pattern[0]==‘.‘ and len(string)!=0): return re_match(string[1:],pattern[1:]) return False 注: 采用递归的方式,终止的条件为:如果字符串和模式串同时到达了结尾,则表明匹配,返回True;如果不同时到达,则返回False。 模式串中如果遍历到‘.‘,则递归遍历字符串下一位和模式串下一位;如果遍历‘*‘就稍复杂些,需要先判断‘*‘前一位是否与字符串相同,如果不是,模式串直接跳过‘*‘,遍历下一位,如果相同,则要分三种情况递归,‘*‘匹配1次,匹配多次,匹配0次。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |