匹配字符串的每个单词中的第一个元音,并用正则表达式以逗号分隔打印它们?

时间:2017-10-23 04:45:50

标签: python regex string findall

这是我到目前为止所拥有的

my_str = "The sky's the limit"

regex = re.findall(r"\b\w*?[aeiouAEIOU]", my_str)
joined_str = ", ".join(regex)

print(joined_str)

我希望它打印

e, e, i

但打印

The, the, li

那么如何用元音忽略单词的前一个字符并打印每个单词的第一个元音并用逗号分隔元音?

2 个答案:

答案 0 :(得分:4)

您只需通过将其封装在捕获组中来限制要返回的表达式的一部分:

>>> re.findall(r"\b\w*?([aeiouAEIOU])", my_str)
['e', 'e', 'i']

()告诉正则表达式引擎只返回()中表达式的匹配项。

答案 1 :(得分:0)

如果没有正则表达式,你可以这样做,就像这样:

def find_first_vowel(s):
    first_vowels = ''
    for word in s.split():        
        for index, char in enumerate(word):            
            if char in 'aeiouAEIOU':    # you can check the index here                
                first_vowels += char                
                break
    return ', '.join(first_vowels)

my_str = "The sky's the limit"

>>> print(find_first_vowel(my_str))
e, e, i