python实现字符串匹配函数
通配符是 shell 命令中的重要功能,
? 表⽰匹配任意 1 个字符,
*表⽰匹配 0 个或多个字符。
请使⽤你熟悉的编程语⾔实现⼀个字符串匹配函数,
⽀持 ? 和 * 通配符。如 “a?cd*d” 匹配 “abcdaccd”
1#coding:utf8
2'''
3通配符是 shell 命令中的重要功能,
4? 表⽰匹配任意 1 个字符,
5*表⽰匹配 0 个或多个字符。
6请使⽤你熟悉的编程语⾔实现⼀个字符串匹配函数,
7⽀持 ? 和 * 通配符。如 “a?cd*d” 匹配 “abcdaccd”
8'''
9
10def solution( re_str,test_str ):
11# 如果两个字符串相等就返回True
查符合两个条件之一的字符串函数12if re_str == test_str :
13return True
14# 标记第⼀个字母
15 r = re_str[0] if re_str != ''else''
16 t = test_str[0] if test_str !=''else''
17# r 不是?也不是* 的情况
18if r != '?'and r != '*' :
19if r != t : # 如果不想相等就返回False
20return False
21else : # 相等就删掉第⼀个单词递归
22 re_str,test_str = re_str[1:],test_str[1:]
23return solution( re_str,test_str )
24# 如果r是? 相当于匹配⼀个字符都删掉⼀个字符然后递归
25if r == '?' :
26 re_str, test_str = re_str[1:], test_str[1:]
27return solution(re_str, test_str)
28# 如果r是* re 是n个* 则返回True
29if r == '*'and re_str.strip('*') == '' :
30return True
31# 否则就是包含* ,*匹配0个字符或多个字符,所以我们返回递归 0个匹配与 1个匹配的逻辑或32return solution(re_str[1:], test_str) or solution(re_str, test_str[1:])
33
34
35
36if__name__ == '__main__':
37 re_str = "a?*cd*d*"
38 test = "abcdaccd"
39 res = solution( re_str,test )
40print(res)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论