提取具有特定字符序列的单词

时间:2018-01-23 14:49:53

标签: python regex

我有一个字符串列表。我只想提取每个字符串中具有特定字符序列的单词。

例如

l1=["grad madd have", "ddim middle left"]

我想要所有包含序列“dd”的单词

所以我想得到

[["madd"], ["ddim", "middle"]]

我一直在尝试使用

形式的模式
[re.findall(r'(\b.*?dd.*\s+)',word) for word in l1] 

但收效甚微

4 个答案:

答案 0 :(得分:1)

您可以使用列表理解。你不需要正则表达式来完成你想要做的事情。

See code in use here

l1=["grad madd have", "ddim middle left"]
print([s for a in l1 for s in a.split() if 'dd' in s])

这循环遍历l1并按空格字符拆分每个值。然后它测试子字符串以查看它是否包含dd并返回它,如果它包含它。

答案 1 :(得分:1)

你很接近,你想用\w*匹配单词字符0到很多次:

[re.findall(r'\w*dd\w*', word) for word in l1]

答案 2 :(得分:0)

您可以尝试使用此正则表达式:\b\w*dd\w*\b

Regex101 Demo.

答案 3 :(得分:0)

在一行中尝试:

l1=["grad madd have", "ddim middle left"]

print(list(map(lambda x:list(filter(lambda y:'dd' in y,x.split())),l1)))

输出:

[['madd'], ['ddim', 'middle']]