In this Re.findall() & Re.finditer() problem, You are given a string S. It consists of alphanumeric characters, spaces and symbols(+,-). Your task is to find all the substrings of S that contains 2 or more vowels. Also, these substrings must lie in between 2 consonants and should contain vowels only.

HackerRank Re.findall() & Re.finditer() solution in python


Problem solution in Python 2 programming.

import re
consonants = 'qwrtypsdfghjklzxcvbnm'
vowels = 'aeiou'
match = re.findall(r'(?<=['+consonants+'])(['+vowels+']{2,})(?=['+consonants+'])',raw_input(),flags = re.I)
if match:
    for i in match:
        print i
else:
    print -1


Problem solution in Python 3 programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT

import re
v = "aeiou"
c = "qwrtypsdfghjklzxcvbnm"
m = re.findall(r"(?<=[%s])([%s]{2,})[%s]" % (c, v, c), input(), flags = re.I)
print('\n'.join(m or ['-1']))


Problem solution in pypy programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
from __future__ import print_function
import re
list = re.findall(r'(?<=[qwrtypsdfghjklzxcvbnm])([aeiou]{2,})[qwrtypsdfghjklzxcvbnm]', raw_input(), flags=re.I)
print('\n'.join(list or ['-1']))


Problem solution in pypy3 programming.

import re

m = re.findall(r"(?<=[^aeiou])([aeiou]{2,})(?=[^aeiou])", input(), re.IGNORECASE)

if m:
    print(*m, sep="\n")
else:
    print(-1)