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

前端之家收集整理的这篇文章主要介绍了如何跟踪正则表达式匹配的执行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有一种方便的方法来在评估m //或s ///表达式时获取正则表达式引擎的状态?

顺便说一句,我知道通过CPAN可以获得Regexp::Debugger package(而且非常酷),但是我没有办法从它那里得到任何类似的痕迹;我不想逐步完成大量的步骤.

解决方法

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

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]+"

猜你在找的正则表达式相关文章