diff -r 39c6b93718f0 -r 371acb50643d progs/catastrophic.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/progs/catastrophic.py Fri Nov 24 03:10:23 2017 +0000 @@ -0,0 +1,24 @@ +#!/usr/bin/env python +import re +import sys + +# case of catastrophic backtracking in Python +# +# regex: (a?){n} a{n} +# strings: aa... +# +# call with timing as: +# +# > time ./catastrophic.py 20 + +# counter n given on the command line +cn = sys.argv[1] + +# constructing the regex +r1 = '((a?){%s})' % cn +r2 = 'a{%s}' % cn + +# calling the matching function +m = re.match(r1 + r2 , "a" * int(cn)) + +print m.group(0)