Как найти все слова, в которых есть буква, появляется ДВАЖДЫ с регулярным выражением Python? - PullRequest
0 голосов
/ 31 марта 2019

Я учусь, как использовать регулярные выражения с Python.Я натолкнулся на вопрос о поиске слов, содержащих определенную частоту буквы в слове.

Учитывая список слов, например, ['elle','household','lel','bye'], я хочу использовать регулярное выражение для поиска слов, которые имеют ровно 2 'l независимо от положения буквы.Так что для этого примера список возврата должен быть ['elle','lel']

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Действительно, вместо этого используйте 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

См. демонстрацию на regex101.com .

0 голосов
/ 31 марта 2019

Попробуйте регулярное выражение, такое как

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

Это ищет ровно два l символа с нулем или более других символов до, между и после. Кроме того, ^ и $ обеспечивают соответствие всех символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...