有没有办法在Python中调试正则表达式?而且我不是指尝试和尝试直到他们工作的过程:)
以下是如何在Perl中调试正则表达式:
use re 'debug'; my $str = "GET http://some-site.com HTTP/1.1"; if($str =~/get\s+(\S+)/i) { print "MATCH:$1\n"; }
上面的代码在运行时在我的计算机上产生以下输出:
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+)"
Mykola Khare.. 17
>>> p = re.compile('.*', re.DEBUG)
max_repeat 0 65535
any None
>>>
正则表达式'|' 运算符vs每个子表达式的单独运行
>>> p = re.compile('.*', re.DEBUG)
max_repeat 0 65535
any None
>>>
正则表达式'|' 运算符vs每个子表达式的单独运行