diff options
Diffstat (limited to 'project2/proj2_s4498062/dns/regexes.py')
-rw-r--r-- | project2/proj2_s4498062/dns/regexes.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/project2/proj2_s4498062/dns/regexes.py b/project2/proj2_s4498062/dns/regexes.py index 48c28c9..07c1eed 100644 --- a/project2/proj2_s4498062/dns/regexes.py +++ b/project2/proj2_s4498062/dns/regexes.py @@ -1,21 +1,26 @@ """Regexes used in the DNS protocol""" + def grpm(regex): """Make a matching group""" return grp(regex, matching=True) + def grp(regex, matching=False): """Make a group""" return r'(' + (r'' if matching else r'?:') + regex + r')' + def opt(regex): """Make an optional group""" return grp(grp(regex) + r'?') + def regex_opt_r(*regexes): """Make a group that matches one of the given regexes""" return grp(r'|'.join(regexes)) + DIGIT = r'\d' LETTER = r'[a-zA-Z]' LETDIG = grp(regex_opt_r(DIGIT, LETTER)) @@ -26,4 +31,3 @@ SUBDOMAIN = grp(grpm(grp(LABEL + r'\.') + r'*') + grpm(LABEL)) DOMAIN = regex_opt_r(SUBDOMAIN, r' ') IP = r'(?:(?:\d{1,3}\.){3}\d{1,3})' - |