| author | Christian Urban <urbanc@in.tum.de> |
| Wed, 08 Feb 2017 11:01:50 +0000 | |
| changeset 474 | 331b2c9e525f |
| parent 420 | progs/catastrophic.py@25bc57b32efa |
| permissions | -rwxr-xr-x |
| 49 | 1 |
#!/usr/bin/env python |
2 |
import re |
|
3 |
import sys |
|
4 |
||
|
420
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
5 |
# case of catastrophic backtracking in Python |
|
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
6 |
# |
|
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
7 |
# regex: (a?){n} a{n}
|
|
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
8 |
# strings: aa... |
|
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
9 |
# |
|
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
10 |
# call with timing as: |
|
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
11 |
# |
|
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
12 |
# > time ./catastrophic.py 20 |
|
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
13 |
|
|
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
14 |
# counter n given on the command line |
| 49 | 15 |
cn = sys.argv[1] |
16 |
||
|
420
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
17 |
# constructing the regex |
| 474 | 18 |
r = '(.*)a(.{%s})bc' % cn
|
| 49 | 19 |
|
|
420
25bc57b32efa
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
411
diff
changeset
|
20 |
# calling the matching function |
| 474 | 21 |
#m = re.match(r, "axaybzbc") |
22 |
m = re.match(r, "a" * 100 + "a" * int(cn) + "bc") |
|
| 49 | 23 |
|
24 |
print m.group(0) |