キャプチャバッファの開始位置と長さを返します。
カテゴリ: | 文字列マッチング |
制限事項: | PRXPARSE関数とともに使用します。 |
このCALLルーチンに必要なPRXPARSE関数にDBCSとの互換性がないため、DBCSおよびMBCSデータの処理にこの関数を使用しないでください。 |
PRXPARSE関数によって返されるパターン識別子の値が含まれる数値変数を指定します。
開始位置と長さを取得するキャプチャバッファを識別する値が含まれる数値の定数、変数または式です。
キャプチャバッファが見つかった位置の戻り値が含まれる数値変数です。
data _null_; patternID = prxparse('/(\d\d):(\d\d)(am|pm)/'); text = 'The time is 09:56am.'; if prxmatch(patternID, text) then do; call prxposn(patternID, 1, position, length); hour = substr(text, position, length); call prxposn(patternID, 2, position, length); minute = substr(text, position, length); call prxposn(patternID, 3, position, length); ampm = substr(text, position, length); put hour= minute= ampm=; put text=; end; run;
hour=09 minute=56 ampm=am text=The time is 09:56am.
data _null_; if _N_ = 1 then do; retain patternID; pattern = "/(\d+):(\d\d)(?:\.(\d+))?/"; patternID = prxparse(pattern); end; array match[3] $ 8; input minsec $80.; position = prxmatch(patternID, minsec); if position ^= 0 then do; do i = 1 to prxparen(patternID); call prxposn(patternID, i, start, length); if start ^= 0 then match[i] = substr(minsec, start, length); end; put match[1] "minutes, " match[2] "seconds" @; if ^missing(match[3]) then put ", " match[3] "milliseconds"; end; datalines; 14:56.456 45:32 ;
14 minutes, 56 seconds, 456 milliseconds 45 minutes, 32 seconds