如何跟踪正则表达式匹配的执行?

时间:2017-08-23 14:17:39

标签: regex perl pcre trace

在评估m//s///表达式时,是否有方便的方法来获取正则表达式引擎状态的跟踪

顺便说一句,我知道通过CPAN可以获得Regexp::Debugger package(并且 非常酷),但我没有看到得到任何类似的痕迹;我不想逐步完成大量的步骤。

1 个答案:

答案 0 :(得分:8)

是。将正则表达式引擎转为调试模式,它将打印它正在做的事情:

use re 'debug'; 

my $str = "abcdefg";
$str =~ m/[ef]+/;

其输出为:

Compiling REx "[ef]+"
Final program:
   1: PLUS (13)
   2:   ANYOF[ef] (0)
  13: END (0)
stclass ANYOF[ef] plus minlen 1 
Matching REx "[ef]+" against "abcdefg"
Matching stclass ANYOF[ef] against "abcdefg" (7 bytes)
   4 <abcd> <efg>            |  1:PLUS(13)
                                  ANYOF[ef] can match 2 times out of 2147483647...
   6 <abcdef> <g>            | 13:  END(0)
Match successful!
Freeing REx: "[ef]+"