From 5f660bfa96ab0b415d411a559791bcf61f1ea3c2 Mon Sep 17 00:00:00 2001 From: Sven Slootweg Date: Thu, 5 Jun 2014 00:44:03 +0200 Subject: [PATCH] Remove likely unnecessary variable-width whitespace matching during preprocessing, to avoid an insane permutation count for partially matching regexes, thereby hanging the parser. Fixes #18. --- pythonwhois/parse.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pythonwhois/parse.py b/pythonwhois/parse.py index 2f6845b..3bd4770 100644 --- a/pythonwhois/parse.py +++ b/pythonwhois/parse.py @@ -490,7 +490,12 @@ def remove_suffixes(data): return cleaned_list def preprocess_regex(regex): - return re.sub(r"\\s\*\(\?P<([^>]+)>\.\+\)", r"\s*(?P<\1>\S.*)", regex) + # Fix for #2; prevents a ridiculous amount of varying size permutations. + regex = re.sub(r"\\s\*\(\?P<([^>]+)>\.\+\)", r"\s*(?P<\1>\S.*)", regex) + # Experimental fix for #18; removes unnecessary variable-size whitespace + # matching, since we're stripping results anyway. + regex = re.sub(r"\[ \]\*\(\?P<([^>]+)>\.\*\)", r"(?P<\1>.*)", regex) + return regex def parse_registrants(data): registrant = None