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 
10 def solution( re_str,test_str ):
11     # 如果两个字符串相等 就返回True
12     if re_str == test_str :
13         return True
14     # 标记第一个字母
15     r = re_str[0] if re_str != '' else ''
16     t = test_str[0] if test_str !='' else ''
17     # r 不是? 也 不是* 的情况
18     if r != '?' and r != '*' :
19         if r != t :     # 如果不想相等就返回False
20             return False
21         else :      # 相等 就 删掉第一个单词 递归
22             re_str,test_str = re_str[1:],test_str[1:]
23             return solution( re_str,test_str )
24     # 如果r是? 相当于匹配一个字符 都删掉一个字符 然后 递归
25     if r == '?' :
26         re_str, test_str = re_str[1:], test_str[1:]
27         return solution(re_str, test_str)
28     # 如果r是*  re 是n个*  则返回True
29     if r == '*' and re_str.strip('*') == '' :
30         return True
31     # 否则 就是包含* ,*匹配0个字符或多个字符,所以我们返回 递归 0个匹配 与 1个匹配 的逻辑或
32     return solution(re_str[1:], test_str) or solution(re_str, test_str[1:])
33 
34 
35 
36 if __name__ == '__main__':
37     re_str = "a?*cd*d*"
38     test = "abcdaccd"
39     res = solution( re_str,test )
40     print(res)

 

转载于:https://www.cnblogs.com/Lin-Yi/p/7795406.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值