diff -r dc528091eb70 -r 4bdf0dedd708 progs/catastrophic3.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/progs/catastrophic3.py Wed Feb 08 11:01:50 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 +r = '(.*)a(.{%s})bc' % cn + +# calling the matching function +#m = re.match(r, "axaybzbc") +m = re.match(r, "a" * 100 + "a" * int(cn) + "bc") + +print m.group(0)