summaryrefslogtreecommitdiff
path: root/project2/proj2_s4498062/dns/regexes.py
diff options
context:
space:
mode:
Diffstat (limited to 'project2/proj2_s4498062/dns/regexes.py')
-rw-r--r--project2/proj2_s4498062/dns/regexes.py6
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})'
-