標準
標準/拡張機能 |
C/C++ |
依存項目 |
XPG4
XPG4.2
|
両方 |
|
形式
#define _XOPEN_SOURCE
#include <regexp.h>
int advance(const char *string, const char *expbuf);
extern char *loc2, *locs;
機能説明
制約事項: この関数は、AMODE 64 ではサポートされません。
advance() 関数は、以前に compile() を呼び出して取得した
コンパイル済み正規表現と、入力された文字ストリングを突き合わせようとします。
先頭パラメーターの string は、突き合わせのために
検査される文字ストリングを指すポインターです。
expbuf は、compile() への以前の呼び出しによって
取得された正規表現を指すポインターです。
外部変数の loc2 は、正規表現に一致した最後の文字の string 内の
次の文字を指します。
外部変数 locs は、advance() 関数にそのバックアップ・ループ
を終了させるため、入力正規表現ストリング内のある点を指すよう任意に設定
できます。
注: 外部変数の cirf、sed、および nbra は予約済みです。
advance() は、パターン照合操作の途中で * また
は ¥{¥} シーケンスを正規表現の中に検出すると、一致
するストリングまでそのポインターを可能な限り先へ進めて、再帰的にこの関数
自体を呼び出し、残りのストリングと残りの正規表現とをマッチングしようとします。一致するものが見つからない限り、advance() は、一致するものを
見つけるまで、または * か ¥{¥} のどちらかに最初に
一致したストリング内の地点に到達するまで、ストリングに沿ってバックアップします。ストリングの初期点に到達する前に、このバックアップを
停止するのが好ましい場合があります。バックアップ・プロセス中のある時点で、外部文字
ポインター
locs がストリング内の点と一致する
と、advance() は、バックアップを行うループから抜けて 0 (失敗を
表す) を戻します。
注 : - compile()、step()、および advance() 関数が
マルチスレッド環境で稼働中の場合、アプリケーションは
これらの関数のシリアライズを適切に行わなければなりません。
- compile()、step()、および advance() 関数は、古いアプリケーションに対応するために用意されているものです。
これらの関数は Single UNIX Specification、バージョン 2 のレガシー機能の
一部でした。既に廃止され、Single UNIX Specification、バージョン 3 の一部として
サポートされていません。新しいアプリケーションでは、より新しい関数の fnmatch()、glob()、regcomp()、および regexec() を使用してください。
これらの関数は、IEEE 標準 1003.1-2001 と
互換性を持つ完全な国際化正規表現の機能を提供します。
戻り値
string の最初のサブストリングが expbuf の正規表現と一致すると、advance() は、ゼロ以外の値を戻します。
一致しない場合、advance() は、0 を戻します。
一致する場合、advance() は、副次作用として、外部文字ポインター loc2 を設定します。変数の loc2 は、正規表現に一致した最後の文字の string 内の次の文字を指します。