Regex для извлечения слов, содержащих три гласных - PullRequest
1 голос
/ 22 февраля 2020

Я пытаюсь создать функцию для извлечения слов, которые имеют 3 последовательных гласных из следующих строк:

import re
def three_vowel_words(text):
     pattern =  "[\w]+[aeiou]{3}"
     result = re.findall(pattern, text)
     return result

print(three_vowel_words("Our team was victorious over theirs in the contest."))
#the output should be ["victorious"]

print(three_vowel_words("Obviously, the acquaintance is serious and ambitious.")) 
#the output should be ["Obviously","acquaintance","serious","ambitious"]

Однако вывод, который я получаю, выглядит следующим образом:

["victoriou"]

["Obviou", "acquai", "seriou", "ambitiou"]

Может ли кто-нибудь помочь мне исправить мой шаблон регулярного выражения, чтобы он извлек полные слова.

Спасибо.

1 Ответ

3 голосов
/ 22 февраля 2020

Сделайте это "\w+[aeiou]{3}\w+" таким образом, чтобы остальная часть слова также соответствовала. С вашим текущим решением сопоставление прекращается, когда найдены 3 последовательных гласных.

РЕДАКТИРОВАТЬ: Как указали @ usr2564301 и @Tomerikoo, более общий способ будет "\w*[aeiou]{3}\w*". Таким образом, слова, начинающиеся или заканчивающиеся 3 гласными или имеющие только 3 гласных, также будут сопоставлены.

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