查找从捕获组中的字符开始的所有可能的子字符串

roO*_*oOt 9 python regex

我有例如字符串,BANANA并希望找到以元音开头的所有可能的子串.我需要的结果如下:

"A", "A", "A", "AN", "AN", "ANA", "ANA", "ANAN", "ANANA"
Run Code Online (Sandbox Code Playgroud)

我试过这个:re.findall(r"([AIEOU]+\w*)", "BANANA") 但它只发现"ANANA"哪个似乎是最长的匹配.我怎样才能找到所有其他可能的子串?

Mag*_*ckå 13

s="BANANA"
vowels = 'AIEOU'
sorted(s[i:j] for i, x in enumerate(s) for j in range(i + 1, len(s) + 1) if x in vowels)
Run Code Online (Sandbox Code Playgroud)


Jam*_*ull 6

这是一种简单的方法.当然,有一个更简单的方法.

def subs(txt, startswith):
    for i in xrange(len(txt)):
        for j in xrange(1, len(txt) - i + 1):
            if txt[i].lower() in startswith.lower():
                yield txt[i:i + j]

s = 'BANANA'
vowels = 'AEIOU'
print sorted(subs(s, vowels))
Run Code Online (Sandbox Code Playgroud)