python查找字符串中带有通配符的所有子字符串

2024-10-03 11:14:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个函数来返回在较长字符串中包含通配符(每个通配符只包含一个字符)的子字符串的所有匹配项。 例如,假设我有主题字符串: aabcddcabaabedcbabaa而我的查询字符串是b?d??ab。 预期产出将是: ['bcddcab', 'bedcbab']

通过查看其他堆栈溢出帖子,我尝试了以下方法:

import fnmatch
subject = "aabcddcabaabedcbabaa"
query = "b?d??ab"
res = fnmatch.filter(subject, query)

但这将返回一个空列表。我做错了什么?我是否正确地使用了fnmatchfilter函数?先谢谢你


Tags: 函数字符串主题ab堆栈filterquery字符
1条回答
网友
1楼 · 发布于 2024-10-03 11:14:23
  • 查询应该是filter的第二个参数,而不是第一个参数
  • filter通过保留与查询匹配的字符串来筛选字符串列表。 filter返回字符串的子字符串列表。如果要使用filter筛选子字符串,首先需要构建子字符串列表:
import fnmatch
subject = "aabcddcabaabedcbabaa"
query = "b?d??ab"
substrings = fnmatch.filter((subject[i:i+len(query)] for i in range(len(subject) - len(query))), query)
print(substrings)

输出:['bcddcab', 'bedcbab']

相关问题 更多 >