• 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)
  • 相关阅读:
    Spring_3.1
    handler发消息的形式
    css元素排列
    利用Socket远程发送文件
    jtree添加节点
    url传参中文乱码
    struts action和jsp之间的传值
    Struts 404 The requested resource is not available
    tomcat server需要重启的时刻
    c++获取系统时间(引用别人的博文)
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/7795406.html
Copyright © 2020-2023  润新知