Is there a way to debug a regular expression in Python? And I'm not referring to the process of trying and trying till they work :)
Here is how regexes can be debugged in Perl:
use re 'debug';
my $str = "GET http://some-site.com HTTP/1.1";
if($str =~/get\s+(\S+)/i) {
print "MATCH:$1\n";
}
The code above produces the following output on my computer when ran:
Compiling REx "get\s+(\S+)"
Final program:
1: EXACTF <get> (3)
3: PLUS (5)
4: SPACE (0)
5: OPEN1 (7)
7: PLUS (9)
8: NSPACE (0)
9: CLOSE1 (11)
11: END (0)
stclass EXACTF <get> minlen 5
Matching REx "get\s+(\S+)" against "GET http://some-site.com HTTP/1.1"
Matching stclass EXACTF <get> against "GET http://some-site.com HTTP/1.1" (33 chars)
0 <> <GET http:/> | 1:EXACTF <get>(3)
3 <GET> < http://so> | 3:PLUS(5)
SPACE can match 1 times out of 2147483647...
4 <GET > <http://som> | 5: OPEN1(7)
4 <GET > <http://som> | 7: PLUS(9)
NSPACE can match 20 times out of 2147483647...
24 <e.com> < HTTP/1.1> | 9: CLOSE1(11)
24 <e.com> < HTTP/1.1> | 11: END(0)
Match successful!
MATCH:http://some-site.com
Freeing REx: "get\s+(\S+)"
>>> p = re.compile('.*', re.DEBUG)
max_repeat 0 65535
any None