パターンに一致し、1つの文字列内で複数の一致が繰り返される部分文字列の位置と長さを返します。
カテゴリ: | 文字列マッチング |
制限事項: | PRXPARSE関数とともに使用します。 |
このCALLルーチンに必要なPRXPARSE関数にDBCSとの互換性がないため、DBCSおよびMBCSデータの処理にこの関数を使用しないでください。 | |
操作: | %SYSCALLマクロステートメントで呼び出されると、CALL PRXNEXTの引数から引用符が削除されます。詳細については、 CALLルーチンと%SYSCALLマクロステートメントを使用する を参照してください。 |
PRXPARSE関数によって返されるID番号の値が含まれる数値変数を指定します。
sourceでパターンマッチングを開始する位置を指定する数値変数です。一致に成功した場合、CALL PRXNEXTはposition + MAX(1, length)の値を返します。一致に成功しなかった場合、startの値は変更されません。
sourceで使用する最後の文字を指定する数値の定数、変数または式です。stopが-1の場合、最後の文字はsourceの最後の空白値以外の文字です。
検索する文字定数、変数または式を指定します。
パターンが開始されるsourceの位置の戻り値が含まれる数値変数です。一致が見つからない場合、CALL PRXNEXTは0を返します。
パターンに一致する文字列の長さの戻り値が含まれる数値変数です。一致が見つからない場合、CALL PRXNEXTは0を返します。
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