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

如何使用Python正则表达式查找所有有字母出现两次的单词?,python,regex,python-3.x,Python,Regex,Python 3.x,我正在学习如何在Python中使用正则表达式。我遇到了一个关于查找单词中包含某个字母频率的单词的问题 给定一个单词列表,例如,['elle','househouse','lel','bye',],我想使用正则表达式查找正好有2个'l'的单词,而不管字母的位置如何。 因此,在本例中,返回列表应为['elle','lel']实际上,请在此处使用计数器: from collections import Counter lst = ['elle','household','lel','bye'] d

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

给定一个单词列表,例如,['elle','househouse','lel','bye',],我想使用正则表达式查找正好有2个'l'的单词,而不管字母的位置如何。 因此,在本例中,返回列表应为['elle','lel']

实际上,请在此处使用计数器:

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
请参阅。

尝试以下正则表达式

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

这将查找两个l字符,其中在前面、中间和后面有零个或多个其他字符。此外,^和$确保匹配的字符都是相同的。

您尝试了什么-我设法解决了可能重复的问题,但感觉效率低下。首先,我选择有一个或多个“l”的单词。然后使用for循环,将其分解为字符列表,然后计算出现的“l”。如果频率等于2,则放入新列表。@Jan,你和我同时写作。因为没有答案,我写了我的。在我按下提交键后,我第一次看到了你的。我相信我的正则表达式比你的简单,因此更容易理解。