Skip to content

Instantly share code, notes, and snippets.

@philandstuff
Created February 7, 2017 18:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save philandstuff/fad7b9a4f3b2b18bb8edfff8514fdc61 to your computer and use it in GitHub Desktop.
Save philandstuff/fad7b9a4f3b2b18bb8edfff8514fdc61 to your computer and use it in GitHub Desktop.
build regexes for matching all vowels
#!/usr/bin/env python3
def regex_for(required_letters):
# special cases for 1 and 2 letters, to keep things a bit tidier
if len(required_letters) == 1:
return required_letters[0]
if len(required_letters) == 2:
x,y = required_letters
return "%s.*%s|%s.*%s" % (x,y,y,x)
subregexes = []
for letter in required_letters:
remaining_letters = list(required_letters)
remaining_letters.remove(letter)
subregexes.append("%s.*(%s)" % (letter, regex_for(remaining_letters)))
return '|'.join(subregexes)
print(regex_for(['a']))
print(regex_for(['a','e']))
print(regex_for(['a','e','i']))
print(regex_for(['a','e','i','o','u']))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment