найти слова, которые соответствуют 3 последовательных гласных Regex - PullRequest
0 голосов
/ 29 мая 2020
text = "Life is beautiful"
pattern = r"[aeiou]{3,}"
result = re.findall(pattern, text)
print(result)

желаемый результат: ['beautiful']

результат, который я получаю: ['eau']

Я пробовал поискать в Google и т.д. c .... Я нашел несколько ответов, но ни один из них не работал !! Я новичок в регулярных выражениях, поэтому, возможно, у меня возникли проблемы, но я не уверен, как это сделать

Я пробовал использовать r"\b[abcde]{3,}\b", все еще ничего, поэтому, пожалуйста, помогите !!

1 Ответ

1 голос
/ 29 мая 2020

Ваше регулярное выражение захватывает только 3 последовательных гласных, поэтому вам нужно расширить его, чтобы захватить остальную часть слова. Это можно сделать, отыскав последовательность букв между двумя разрывами слова и используя положительный просмотр вперед для трех последовательных гласных в последовательности. Например:

import re

text = "Life is beautiful"
pattern = r"\b(?=[a-z]*[aeiou]{3})[a-z]+\b"
result = re.findall(pattern, text, re.I)
print(result)

Вывод:

['beautiful']
...