m//
またはs///
の式の評価中にトレースを正規表現エンジンの状態のにする便利な方法はありますか?ところで正規表現マッチングの実行をトレースする方法は?
は、私はCPANを通じて利用できるRegexp::Debugger packageがあることを承知している(と、それは驚くほどクールです)、私はそれからのトレースのようなものを取得する方法が表示されません。私は潜在的に膨大な数のステップを踏み越えたくありません。
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]+"
スクリプトを編集したくない場合は、 'PERL5OPT = -Mre = debug script.pl'を使ってスクリプトを有効にすることができます – ikegami
を[YAPE ::正規表現を:: Explain](http://search.cpan.org/perldoc?YAPE::Regex::Explain)は、正規表現のパターンを「説明する」(コメントを付けて注釈を付ける)モジュールです。 – ikegami