如何使用Python正则表达式查找所有出现字母的单词TWICE?

时间:2019-03-31 17:21:29

标签: python regex python-3.x

我正在学习如何在Python中使用正则表达式。我遇到了一个有关查找单词的问题,该单词包含某个单词中某个字母的特定频率。

给出一个单词列表,例如['elle','household','lel','bye'],我想使用正则表达式查找具有精确2个'l'的单词,而与字母的位置无关。 因此,对于此示例,返回列表应为['elle','lel']

2 个答案:

答案 0 :(得分:1)

真的,请在此使用Counter

from collections import Counter

lst = ['elle','household','lel','bye']

double_l = [word
            for word in lst
            for c in [Counter(word)]
            if c['l'] == 2]

print(double_l)
# ['elle', 'lel']


如果您坚持(为什么?),这就是使用正则表达式“计数”的方式:

^(?:[^l]*l){2}[^l]*$

那段闪亮的代码说:

^             # bound the expression to the start
(?:[^l]*l){2} # not an l, followed by an l, two times
[^l]*         # no l thereafter
$             # the end

请参见a demo on regex101.com

答案 1 :(得分:0)

尝试使用正则表达式,例如

^[^l]*l[^l]*l[^l]*$

这正好寻找两个l字符,以及之前,之间和之后的零个或多个其他字符。此外,^$确保匹配项可以查看所有字符。