python - 列表中字符串中间的正则表达式(Python)
问题描述
我正在尝试使用正则表达式来匹配字符串中间的模式,其中字符串也在列表中。我可以找到一个或另一个问题的解决方案,但对如何将两者结合起来感到困惑。
首先,我将此解决方案用作模板。我在“cat”和“cow”之后添加了文本,所以它们现在是“cat named bob”和“cow also named bob”。目标是从列表中的这两个字符串中提取单词“named”,并将它们作为列表中的项目返回(例如 ['named', 'named'])。
mylist = ["dog", "cat named bob", "wildcat", "thundercat", "cow also named bob", "hooo"]
r = re.compile('named')
newlist = list(filter(r.search, mylist))
print(newlist)
但是,如果我使用 r.search 或 r.findall,我会得到整个字符串,而不仅仅是中间部分。如果我使用 r.match,我不会得到任何结果。我发现了一些关于在字符串中间进行搜索的 Stack Overflow 查询,但它们似乎不适用于在字符串中查找匹配项的解决方案。我尝试了以下代码,但没有成功:
newlist = list(filter(r.match.group(1), mylist))
我将如何结合这两个任务并在列表内的字符串中间提取文本?
解决方案
使用列表理解:
print([m.group() for m in map(r.search, mylist) if m])
这输出:
['named', 'named']
推荐阅读
- graphql - 在 Strapi 中限制属于所有者的 Graphql 结果
- video-streaming - VLC 电视流媒体的频道控制
- java - 如何以一种方法处理 2 个数据库?
- python - 类型错误:“在‘str’和‘float’的实例之间不支持”?
- javascript - 将输入文本的值解析为 GTM 变量宏?
- r - 如何使用 WorldClim 数据计算 R 中的热指数
- c - 在 MacOS 上调用 abort() 会导致陷阱,但不会产生核心转储
- c# - 获取不同对象的Json String中的一个对象
- c++ - 为什么没有调用copy assignment方法?
- ubuntu - 无法将 WebP 添加到 ImageMagick