我如何检查一个字符串是否包含另一个字符串

时间:2021-06-14 19:16:45

标签: python string

我有两个字符串列表,我想检查一个列表中的单词是否包含另一个列表中的字符串

这是我的意思的一个例子:

l1 = ["heollo", "leetcode"], l2 = ["e", "oo"]

返回值应该是

<块引用>

“你好”

从这里开始,因为它始终包含 "oo""e"

我知道可以使用正则表达式和通配符,但我尝试过这样的事情:

string = "heollo"
pattern = "*o*o*"
match = fnmatch.fnmatch(string, pattern)
print(match)

现在这就是我想要的,但是我如何能够从我的列表中获取值,例如 "oo" 并修改它们以允许在之前、之间或之后的任何事情,如果我有 "jjj" 怎么能我让它变成了 "*j*j*j*" 或者有更好的方法来解决这个问题,谢谢

1 个答案:

答案 0 :(得分:1)

这会起作用:

import re
l1 = ["heollo", "leetcode"]
l2 = ["e", "oo"]
patterns = ['.*'.join(list(item)) for item in l2]
# patterns is ['e', 'o.*o']
result = [item for item in l1 if all(
    [re.search(pattern, item) is not None for pattern in patterns]
)]
# ['heollo']

我在这里更正了您的正则表达式:您想要 .* - * 表示匹配 0 个或多个,. 表示匹配任何字符。总之,这意味着匹配任何字符的 0 次或多次出现。如果 pattern 不在 item 中,则 re.search(pattern, item) 返回 None,因此我们只保留任何搜索都不会返回 None 的项目。