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 (3) 3: PLUS (5) 4: SPACE (0) 5: OPEN1 (7) 7: PLUS (9) 8: NSPACE (0) 9: CLOSE1 (11) 11: END (0) stclass EXACTF minlen 5 Matching REx 'get\s+(\S+)' against 'GET http://some-site.com HTTP/1.1' Matching stclass EXACTF against 'GET http://some-site.com HTTP/1.1' (33 chars) 0 | 1:EXACTF (3) 3 | 3:PLUS(5) SPACE can match 1 times out of 2147483647... 4 | 5: OPEN1(7) 4 | 7: PLUS(9) NSPACE can match 20 times out of 2147483647... 24 | 9: CLOSE1(11) 24 | 11: END(0) Match successful! MATCH:http://some-site.com Freeing REx: 'get\s+(\S+)'
regex '|' operator vs separate runs for each sub-expression