在python中搜索字符串中的模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在python中搜索字符串中的模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2087字,纯文字阅读大概需要3分钟。
内容图文
问题:我对python很新,所以请耐心等待.这是一项家庭作业,我需要一些帮助.
因此,对于matchPat函数,我需要编写一个函数,该函数将接受两个参数str1和str2,并返回一个布尔值,指示str1是否在str2中.但是我必须在str1中使用星号作为通配符. *只能在str1中使用,它将代表我需要忽略的一个或多个字符. matchPat的示例如下:
matchPat(‘a * t * r’,’anteaters’):是的
matchPat(‘a * t * r’,’albatross’):是的
matchPat(‘a * t * r’,’artist’):错误
我当前的matchPat函数可以判断str1的字符是否在str2中,但我真的不知道如何告诉python(使用*作为外卡)来查找’a'(第一个字母)以及之后找到a,跳过下一个0或更多字符,直到找到下一个字母(在示例中为’t’),依此类推.
def matchPat(str1,str2):
## str(*)==str(=>1)
if str1=='':
return True
elif str2=='':
return False
elif str1[0]==str2[0]:
return matchPat(str1[2],str2[len(str1)-1])
else: return True
解决方法:
这里的基本思想是比较str1和str2中的每个字符,如果str1中的char是“*”,则在str2中找到str1中字符旁边的字符.
假设你不打算使用任何函数(除了find(),这可以很容易地实现),这是很难的方法(代码是直截了当但很混乱,我尽可能评论) –
def matchPat(str1, str2):
index1 = 0
index2 = 0
while index1 < len(str1):
c = str1[index1]
#Check if the str2 has run it's course.
if index2 >= len(str2):
#This needs to be checked,assuming matchPatch("*", "") to be true
if(len(str2) == 0 and str1 == "*"):
return True
return False
#If c is not "*", then it's normal comparision.
if c != "*":
if c != str2[index2]:
return False
index2 += 1
#If c is "*", then you need to increment str1,
#search for the next value in str2,
#and update index2
else:
index1 += 1
if(index1 == len(str1)):
return True
c = str1[index1]
#Search the character in str2
i = str2.find(c, index2)
#If search fails, return False
if(i == -1):
return False
index2 = i + 1
index1 += 1
return True
输出 –
print matchPat("abcde", "abcd")
#False
print matchPat("a", "")
#False
print matchPat("", "a")
#True
print matchPat("", "")
#True
print matchPat("abc", "abc")
#True
print matchPat("ab*cd", "abacacd")
#False
print matchPat("ab*cd", "abaascd")
#True
print matchPat ('a*t*r', 'anteater')
#True
print matchPat ('a*t*r', 'albatross')
#True
print matchPat ('a*t*r', 'artist')
#False
内容总结
以上是互联网集市为您收集整理的在python中搜索字符串中的模式全部内容,希望文章能够帮你解决在python中搜索字符串中的模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。