Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Regex VERBOSE X

  • VERBOSE
  • X
import re

email = "foo@bar.com"

m = re.search(r'\w[\w.-]*\@([\w-]+\.)+(com|net|org|uk|hu|il)', email)
if (m):
    print('match 1')


# To make the regex more readable we can break it into rows and add comments:
m = re.search(r'''
                \w[\w.-]*               # username
                \@
                ([\w-]+\.)+             # domain
                (com|net|org|uk|hu|il)  # gTLD
                ''', email, re.VERBOSE)
if (m):
    print('match 2')


# Improvement to make the code *after* the regex more readable using named captures
m = re.search(r'(?P<username>\w[\w.-]*)\@(?P<domain>[\w-]+\.)+(?P<gtld>com|net|org|uk|hu|il)', email)


# Both, use named captures and also break it up to rows.
m = re.search(r'''
              (?P<username>\w[\w.-]*)
              \@
              (?P<domain>[\w-]+\.)+
              (?P<gtld>com|net|org|uk|hu|il)   # I only handle a few because this is just an example
              ''', email, re.VERBOSE)