gpt4 book ai didi

python - 在 python 中搜索字符串中的模式

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:19 25 4
gpt4 key购买 nike

问题:我是 python 的新手,所以请多多包涵。这是一项家庭作业,我需要一些帮助。

因此,对于 matchPat 函数,我需要编写一个函数,它接受两个参数,str1 和 str2,并返回一个 bool 值,指示 str1 是否在 str2 中。但我必须在 str1 中使用星号作为通配符。 * 只能在 str1 中使用,它将代表一个或多个我需要忽略的字符。 matchPat示例如下:

matchPat ( 'a*t*r', 'anteaters' ) : True

matchPat ( 'a*t*r', 'albatross' ) : True

matchPat ('a*t*r', '艺术家'): 假

我当前的 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

最佳答案

Python 字符串有 in 运算符;您可以使用 str1 in str2 检查 str1 是否是 str2 的子字符串。

您可以 split一个字符串到一个基于标记的子字符串列表。 "a*b*c".split("*")["a","b","c"]

您可以使用字符串的 find 找到字符串中子字符串下一次出现的偏移量方法。

所以通配符匹配的问题就变成了:

  1. 将模式拆分为由 astrix 分隔的部分
  2. 对于模式的每一部分
  3. 我们可以在前一部分的位置之后找到它吗?

您将不得不处理极端情况,例如以星号开头或结尾的模式,或者有两个星号并排等等。祝你好运!

关于python - 在 python 中搜索字符串中的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22026644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com