我正在学习如何在Python中使用正则表达式。我遇到了一个有关查找单词的问题,该单词包含某个单词中某个字母的特定频率。
给出一个单词列表,例如['elle','household','lel','bye']
,我想使用正则表达式查找具有精确2个'l'的单词,而与字母的位置无关。
因此,对于此示例,返回列表应为['elle','lel']
答案 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
答案 1 :(得分:0)
尝试使用正则表达式,例如
^[^l]*l[^l]*l[^l]*$
这正好寻找两个l
字符,以及之前,之间和之后的零个或多个其他字符。此外,^
和$
确保匹配项可以查看所有字符。