DATAステップでPerl正規表現を有効にし、デバッグ出力をSASログに送信します。
カテゴリ: | 文字列マッチング |
制限事項: | CALL PRXCHANGE、CALL PRXFREE、CALL PRXNEXT、CALL PRXPOSN、CALL PRXSUBSTR、PRXPARSE、PRXPAREN、PRXMATCH関数およびCALLルーチンとともに使用します。PRXPARSE関数はDBCSとは互換性がありません。 |
data _null_; /* Turn the debugging option on. */ call prxdebug(1); putlog 'PRXPARSE: '; re = prxparse('/[bc]d(ef*g)+h[ij]k$/'); putlog 'PRXMATCH: '; pos = prxmatch(re, 'abcdefg_gh_'); /* Turn the debugging option off. */ call prxdebug(0); run;
PRXPARSE:Compiling REx '[bc]d(ef*g)+h[ij]k$' 1 size 41 first at 1 2 rarest char g at 0 5 rarest char d at 0 1:ANYOF[bc](10) 3 10:EXACT <d>(12) 12:CURLYX[0] {1,32767}(26) 14: OPEN1(16) 16: EXACT <e>(18) 18: STAR(21) 19: EXACT <f>(0) 21: EXACT <g>(23) 23: CLOSE1(25) 25: WHILEM[1/1](0) 26:NOTHING(27) 27:EXACT <h>(29) 29:ANYOF[ij](38) 38:EXACT <k>(40) 40:EOL(41) 41:END(0) anchored 'de' at 1 floating 'gh' at 3..2147483647 (checking floating) 4 stclass 'ANYOF[bc]' minlen 7 6 PRXMATCH:Guessing start of match, REx '[bc]d(ef*g)+h[ij]k$' against 'abcdefg_gh_'...Did not find floating substr 'gh'...Match rejected by optimizer
1 | この行にはPerl正規表現のプリコンパイル済みの形式が表示されます。 |
2 | sizeはPerl正規表現のコンパイル済み形式の値(任意の単位)を示します。41は照合する最初のノードのラベルIDです。 |
3 | この行から正規表現のコンパイル済み形式でのプログラムノードのリストが開始します。 |
4 | これら2つの行にはオプティマイザ情報が表示されます。上述の例では、オフセット1では部分文字列de 、オフセット3から無限大までは部分文字列gh が一致に含まれる必要があることをオプティマイザが検出しています。パターンマッチをすばやく除外するため、Perlは部分文字列de を確認する前に部分文字列gh を確認します。
オプティマイザは、文字クラス(行5)、7文字以上(行6)の一致がfirst ID (行2)で開始する情報を使用する可能性があります。
|