このページの内容

PCRE2のサンプルプログラム

PCRE2の使用を始めるための、簡単で完全なサンプルプログラムが、PCRE2配布物のsrcディレクトリーにあるpcre2demo.cとして提供されています。そのコードの一覧は、pcre2demoの文書に掲載されています。PCRE2の配布物が手元にない場合は、この一覧を保存すればpcre2demo.cの内容を再作成できます。

サンプルプログラムは、第1引数に指定された正規表現をコンパイルし、第2引数の対象文字列と照合します。PCRE2のオプションは設定せず、既定の文字テーブルを使用します。照合が成功すると、一致した対象文字列の部分と、捕捉された各部分文字列の内容を出力します。

コマンドラインで-gオプションを指定すると、プログラムは、同じ対象文字列に同じ正規表現がさらに一致するかを調べます。空文字列に一致する可能性があるため、処理のロジックは少し複雑です。何をしているかはコード内のコメントで説明しています。

pcre2demo.cのコードは、PCRE2の8ビットライブラリーを使う8ビットのプログラムです。8ビットのコード単位で格納された文字列と文字を扱います。既定では1コード単位が1文字に対応しますが、パターンが「(*UTF)」で始まる場合、パターンと対象文字列の両方をUTF-8の文字列として扱い、1文字が複数のコード単位を占めることがあります。

PCRE2が、使用するOSの標準のインクルードディレクトリーとライブラリーディレクトリーにインストールされていれば、次のようなコマンドでサンプルプログラムをコンパイルできるはずです。

  cc -o pcre2demo pcre2demo.c -lpcre2-8

PCRE2が別の場所にインストールされている場合は、コマンドラインにオプションを追加する必要があるかもしれません。たとえば、Unix系のシステムでPCRE2を/usr/localにインストールしている場合、次のようなコマンドでコンパイルできます。

  cc -o pcre2demo -I/usr/local/include pcre2demo.c -L/usr/local/lib -lpcre2-8

サンプルプログラムをビルドすると、次のような簡単なテストを実行できます。

  ./pcre2demo 'cat|dog' 'the cat sat on the mat'
  ./pcre2demo -g 'cat|dog' 'the dog sat on the cat'
  ./pcre2demo -i 'cat' 'the dog sat on the CAT'

より包括的なテストプログラムとして、pcre2testがあります。このプログラムは、PCRE2の3種類のライブラリーすべて(8ビット・16ビット・32ビット。ただし、すべてをインストールする必要はありません)を使って正規表現をテストする、さらに多くの機能を備えています。pcre2demoは、比較的簡単なコードの例として提供されています。

PCRE2が標準のライブラリーディレクトリーにインストールされていない状態でpcre2demoを実行しようとすると、一部のOS(たとえばSolaris)では、次のようなエラーが発生することがあります。

  ld.so.1: pcre2demo: fatal: libpcre2-8.so.0: open failed: No such file or directory

これは、そのシステムでの共有ライブラリーのサポート方法によるものです。この問題を回避するには、たとえば次を

  -R/usr/local/lib

コンパイルコマンドへ追加する必要があります。

著者

Philip Hazel
University Computing Serviceを退職
英国ケンブリッジ。

改訂

最終更新日: 2025年2月28日
Copyright © 1997-2016 University of Cambridge.