python - 查找通过从给定字符串中删除字母创建的单词
问题描述
我正在尝试使用正则表达式和我的文本文件编写代码。我的文件逐行包含这些单词:
each
expressions
flags
in
from
given
line
of
once
lines
no
我的目的是;显示通过从给定子字符串中删除字母创建的单词。
例如; 如果我的子字符串是"flamingoes"
,我的输出应该是;
flags
in
line
lines
no
因为它们是通过删除字母从我的子字符串中创建的,并且它们也在我的文本文件中。
我做了很多关于正则表达式的工作,但我对这个挑战很感兴趣。有没有任何正则表达式解决方案?
解决方案
您应该为要查找的每个单词创建一个正则表达式。每个字母之间的表达式.*?
是一个非贪婪模式,这将避免回溯(至少其中一些),并使搜索更快。
例如,单词“given”的正则表达式将是g.*?i.*?v.*?e.*?n
import re
def hidden_words(needles, haystack):
for needle in needles:
regex = re.compile(('.*?').join(list(needle)))
if regex.search(haystack):
yield needle
needles = ['each', 'expressions', 'flags', 'in', 'from',
'given', 'line', 'of', 'once', 'lines', 'no']
print(*hidden_words(needles, 'flamingoes'), sep='\n')
推荐阅读
- mysql - 解释一下理解这个复杂查询的方法
- arrays - 所有数组元素的 MongoDB 唯一索引
- javascript - 这个“[]”在这里做什么?
- javascript - 在 React-Native 中连接选择器
- shell - 使用 shell 从 JSON 文件中获取记录数
- java - Stream使用过程中发生异常时如何捕获和修改数据
- python - 使用python将多行txt文件转换为CSV
- php - 如何在 laravel mongodb 中提取子文档
- python - 如何在使用 Tensorflow 数据集 API 时使用设置提供标量
- csv - 加载 tempView 时空字符串显示为 null