通配符是 shell 命令中的重要功能,
? 表示匹配任意 1 个字符,
*表示匹配 0 个或多个字符。
请使用你熟悉的编程语言实现一个字符串匹配函数,
支持 ? 和 * 通配符。如 “a?cd*d” 匹配 “abcdaccd”
 #coding:utf8
'''
通配符是 shell 命令中的重要功能,
? 表示匹配任意 1 个字符,
*表示匹配 0 个或多个字符。
请使用你熟悉的编程语言实现一个字符串匹配函数,
支持 ? 和 * 通配符。如 “a?cd*d” 匹配 “abcdaccd”
''' def solution( re_str,test_str ):
# 如果两个字符串相等 就返回True
if re_str == test_str :
return True
# 标记第一个字母
r = re_str[0] if re_str != '' else ''
t = test_str[0] if test_str !='' else ''
# r 不是? 也 不是* 的情况
if r != '?' and r != '*' :
if r != t : # 如果不想相等就返回False
return False
else : # 相等 就 删掉第一个单词 递归
re_str,test_str = re_str[1:],test_str[1:]
return solution( re_str,test_str )
# 如果r是? 相当于匹配一个字符 都删掉一个字符 然后 递归
if r == '?' :
re_str, test_str = re_str[1:], test_str[1:]
return solution(re_str, test_str)
# 如果r是* re 是n个* 则返回True
if r == '*' and re_str.strip('*') == '' :
return True
# 否则 就是包含* ,*匹配0个字符或多个字符,所以我们返回 递归 0个匹配 与 1个匹配 的逻辑或
return solution(re_str[1:], test_str) or solution(re_str, test_str[1:]) if __name__ == '__main__':
re_str = "a?*cd*d*"
test = "abcdaccd"
res = solution( re_str,test )
print(res)

python实现 字符串匹配函数的更多相关文章

  1. Python中字符串匹配函数startswith()函数

    1.函数用途含义 Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False.如果参数 beg 和 end 指定值,则在指定范围内 ...

  2. 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  3. C语言字符串匹配函数

    C语言字符串匹配函数,保存有需要时可以用: #include <stdio.h> #include <stdlib.h> #include <string.h> # ...

  4. php -- strstr()字符串匹配函数(备忘)

    Learn From: http://blog.csdn.net/morley_wang/article/details/7859922 strstr(string,search) strstr() ...

  5. 函数:MySQL中字符串匹配函数LOCATE和POSITION使用方法

    1. 用法一 LOCATE(substr,str) POSITION(substr IN str) 函数返回子串substr在字符串str中第一次出现的位置.如果子串substr在str中不存在,返回 ...

  6. python join字符连接函数的使用方法

    就是把一个list中所有的串按照你定义的分隔符连接起来,比如: >>> import string >>> >>> >>> li ...

  7. leetcode——Implement strStr() 实现字符串匹配函数(AC)

    Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if need ...

  8. 使用Python做简单的字符串匹配

    由于需要在半结构化的文本数据中提取一些特定格式的字段.数据辅助挖掘分析工作,以往都是使用Matlab工具进行结构化数据处理的建模,matlab擅长矩阵处理.结构化数据的计算,Python具有与matl ...

  9. Python做简单的字符串匹配详解

    Python做简单的字符串匹配详解 由于需要在半结构化的文本数据中提取一些特定格式的字段.数据辅助挖掘分析工作,以往都是使用Matlab工具进行结构化数据处理的建模,matlab擅长矩阵处理.结构化数 ...

随机推荐

  1. 自创最精简的python装饰器

    个人心血原创,欢迎转载,请注明作者和出处.否则依法追究法律责任!!!! author:headsen  chen date:2018-03-21  10:37:52 代码: 代码解析过程:1,def ...

  2. 初始化angularJS之ng-app的自动绑定和手动绑定

    在传统的angularJS应用中,都是通过ng-app把angular应用绑定到某个dom上,这样做会把js代码入侵到html上,angular提供了手动启动的API--angular.bootstr ...

  3. WinSock 异步I/O模型-1

    异步选择(WSAAsyncSelect):异步选择基本定义 异步选择(WSAAsyncSelect)模型是一个有用的异步 I/O 模型.利用这个模型,应用程序可在一个套接字上,接收以 Windows ...

  4. TPYBoard v102 DIY照相机(视频和制作流程)

    前段时间的帖子,利用TPYBoard v102做的DIY照相机,周末实物终于做出来了,加了两个按键模块和一个5110,做的有点糙啊----望大家勿怪,哈哈哈.拍出来图片还算清晰,串口摄像头模块用的30 ...

  5. 兄弟连学Python-Mysql的操作应用

    1.创建数据库 格式: create database if not exists 数据库名 default charset utf8; 注意: 1.数据库是唯一的 2.if not exists先判 ...

  6. 国内可用的Internet时间同步服务器地址(NTP时间服务器)

    不知道什么鬼我这系统自带的Internet时间同步服务器地址居然不可用,终端ping系统自带服务器两个居然都不通???难道时间服务器也和谐么? 好在阿里云提供了7个NTP时间服务器也就是Interne ...

  7. python处理点云数据并生成三维点云模型

    1.python代码: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 from mpl_toolkits.mplot3d impor ...

  8. iptables.sh 初始化防火墙配置

    #!/bin/bash iptables -F iptables -X iptables -Z iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT ...

  9. (转)[置顶] Android APK反编译就这么简单 详解(附图) .

    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...

  10. Restful风格,PUT修改功能请求,表单中存在文件报错-HTTP Status 405 - Request method 'POST' not supported

    解决方案配置如下 <!-- 配置文件上传解析器 --> <bean id="multipartResolver" class="org.springfr ...