前のページ|次のページ

CALL PRXNEXTルーチン

パターンに一致し、1つの文字列内で複数の一致が繰り返される部分文字列の位置と長さを返します。

カテゴリ: 文字列マッチング
制限事項: PRXPARSE関数とともに使用します。
このCALLルーチンに必要なPRXPARSE関数にDBCSとの互換性がないため、DBCSおよびMBCSデータの処理にこの関数を使用しないでください。
操作: %SYSCALLマクロステートメントで呼び出されると、CALL PRXNEXTの引数から引用符が削除されます。詳細については、 CALLルーチンと%SYSCALLマクロステートメントを使用する を参照してください。

構文

必須引数

regular-expression-id

PRXPARSE関数によって返されるID番号の値が含まれる数値変数を指定します。

start

sourceでパターンマッチングを開始する位置を指定する数値変数です。一致に成功した場合、CALL PRXNEXTはposition + MAX(1, length)の値を返します。一致に成功しなかった場合、startの値は変更されません。

停止

sourceで使用する最後の文字を指定する数値の定数、変数または式です。stopが-1の場合、最後の文字はsourceの最後の空白値以外の文字です。

source

検索する文字定数、変数または式を指定します。

position

パターンが開始されるsourceの位置の戻り値が含まれる数値変数です。一致が見つからない場合、CALL PRXNEXTは0を返します。

length

パターンに一致する文字列の長さの戻り値が含まれる数値変数です。一致が見つからない場合、CALL PRXNEXTは0を返します。

詳細

CALL PRXNEXTルーチンは、パターンを使用して変数sourceを検索します。source内のstartからstopの間にあるパターンマッチの位置と長さを返します。startパラメータの値は一致に続く次の文字の位置に更新されるため、CALL PRXNEXTでは連続して複数回パターンに一致する文字列を検索できます。
パターンマッチングの詳細については、Perl正規表現(PRX)を使用したパターンマッチングを参照してください。

比較

Perl正規表現(PRX)の関数とCALLルーチンは、連携してパターンと一致する文字列を操作します。これらの関数およびCALLルーチンのリストと概要説明については、カテゴリ別のSAS関数とCALLルーチンの文字列マッチングカテゴリを参照してください。

次の例では、テキスト文字列内からすべてのcat、rat、batを検索します。
data _null_;
   ExpressionID = prxparse('/[crb]at/');
   text = 'The woods have a bat, cat, and a rat!';
   start = 1;
   stop = length(text);
      /* Use PRXNEXT to find the first instance of the pattern, */
      /* then use DO WHILE to find all further instances.       */
      /* PRXNEXT changes the start parameter so that searching  */
      /* begins again after the last match.                     */
   call prxnext(ExpressionID, start, stop, text, position, length);
      do while (position > 0);
         found = substr(text, position, length);
         put found= position= length=;
         call prxnext(ExpressionID, start, stop, text, position, length);
      end;
run;
次の出力がログに書き込まれます。
found=bat position=18 length=3 found=cat position=23 length=3 found=rat position=34 length=3

関連項目:

前のページ|次のページ|ページの先頭へ