フォーマット
#include <regex.h> size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size);
言語レベル: XPG4
スレッド・セーフ: はい。
ロケール依存: この関数の振る舞いは、 現行ロケールの LC_CTYPE カテゴリーおよび LC_COLLATE カテゴリーの影響を 受ける可能性があります。この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。詳細については、CCSID およびロケールの理解を参照してください。
説明
regerror() 関数は、正規表現 preg のエラー・コード errcode の説明を検索します。 errcode の説明は、errbuf に割り当てられます。 errbuf_size 値は、 保管できる最大メッセージ・サイズ (errbuf のサイズ) を指定します。 errcode の説明ストリングは、以下のとおりです。
エラー・コード | ストリングの説明 |
---|---|
REG_NOMATCH | regexec() は一致を見つけられませんでした。 |
REG_BADPAT | 正規表現が無効です。 |
REG_ECOLLATE | 無効な照合エレメントを参照しました。 |
REG_ECTYPE | 無効な文字クラス・タイプを参照しました。 |
REG_EESCAPE | 正規表現の最後の文字が ¥ です。 |
REG_ESUBREG | ¥digit 内の数値が無効、またはエラーです。 |
REG_EBRACK | [] が不揃いです。 |
REG_EPAREN | ¥( ¥) または () が不揃いです。 |
REG_EBRACE | ¥{ ¥} が不揃いです。 |
REG_BADBR | ¥{ と ¥} の間の式が無効です。 |
REG_ERANGE | 範囲式内のエンドポイントが無効です。 |
REG_ESPACE | メモリー不足です。 |
REG_BADRPT | ?、*、または + の前に有効な正規表現がありません。 |
REG_ECHAR | マルチバイト文字が無効です。 |
REG_EBOL | ^ アンカーが正規表現の先頭にありません。 |
REG_EEOL | $ アンカーが正規表現の末尾にありません。 |
REG_ECOMP | regcomp() 呼び出し中に不明なエラーが発生しました。 |
REG_EEXEC | regexec() 呼び出し中に不明なエラーが発生しました。 |
戻り値
regerror() は、エラー条件を説明するストリングを保持するために必要なバッファーのサイズを戻します。 errno の値は ECONVERT (変換エラー) に設定される可能性があります。
regerror() の使用例
この例では、無効な正規表現をコンパイルし、regerror() 関数を使用してエラー・メッセージを出力します。
#include <regex.htm> #include <stdio.h> #include <stdlib.h> int main(void) { regex_t preg; char *pattern = "a[missing.bracket"; int rc; char buffer[100]; if (0 != (rc = regcomp(&preg, pattern, REG_EXTENDED))) { regerror(rc, &preg, buffer, 100); printf("regcomp() failed with '%s'¥n", buffer); exit(EXIT_FAILURE); } return 0; /********************************************************** The output should be similar to: regcomp() failed with '[] imbalance.' **********************************************************/ }
関連情報