regerror() — 正規表現のエラー・メッセージの戻し

フォーマット

#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.'
   **********************************************************/
}

関連情報



[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]