PCREとは? わかりやすく解説

正規表現関数(Perl 互換)

導入

この正規表現関数で使用するパターンの構文は、Perl と類似しています。 正規表現は、スラッシュ (/) などのデリミタで囲う必要があります。 デリミタとしては、英数字およびバックスラッシュ(\) 以外のすべての文字を使用可能です。 デリミタ文字を正規表現本体において使用する必要がある場合は、 バックスラッシュでエスケープします。PHP 4.0.4 以降、 Perl形式の (), {}, [], <> も使用可能です。 パターンの詳細については、パターン構文 を参照してください。
様々な修飾子を終端デリミタの後に付け、 マッチングに変化を与えることができます。 パターン修飾子 を参照ください。
PHP は、POSIX 拡張正規表現関数 において、 POSIX 拡張構文を用いた正規表現もサポートしています。
注意: この拡張モジュールでは、コンパイルした正規表現のために スレッド単位のグローバルキャッシュ (最大 4096) を管理しています。

警告
PCRE には、いくつかの制限があります。詳細は、» http://www.pcre.org/pcre.txt を参照してください。

要件

外部ライブラリを必要としません。

インストール手順

PHP 4.2.0 以降、本関数はデフォルトで有効となっています。 --without-pcre-regex で PCRE 関数を 無効にすることができます。 付属のライブラリを使用しない場合、 --with-pcre-regex=DIR を使用して PCRE のインクルードおよびライブラリファイルがある場所 DIR を指定してください。 以前のバージョンでは、本関数を使用するためには --with-pcre-regex[=DIR] を指定して PHP を configure およびコンパイルする必要があります。
Windows 版の PHP には この拡張モジュールのサポートが組み込まれています。これらの関数を使用 するために拡張モジュールを追加でロードする必要はありません。

実行時設定

php.ini の設定により動作が変化します。
表 234. PCRE 設定オプション
名前デフォルト変更の可否変更履歴
pcre.backtrack_limit100000PHP_INI_ALLPHP 5.2.0 以降で使用可能
pcre.recursion_limit100000PHP_INI_ALLPHP 5.2.0 以降で使用可能

PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
pcre.backtrack_limit integer
PCRE のバックトラック処理の制限値です。
pcre.recursion_limit integer
PCRE の再帰処理の制限値です。この値を大きくすると、 使用可能なプロセススタックを使い切ってしまい、 (OS のスタックサイズの制限値に達して) PHP をクラッシュさせてしまうことに注意しましょう。

リソース型

リソース型は定義されていません。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
表 235. PREG 定数
定数説明
PREG_PATTERN_ORDER $matches[0] はパターン全体にマッチした文字列の配列、 $matches[1] は第 1 のキャプチャ用サブパターンにマッチした文字列の配列、 といったように結果の順序を指定します。 このフラグは、preg_match_all() でのみ使用されます。
PREG_SET_ORDER $matches[0] は 1 回目のマッチングでキャプチャした値の配列、 $matches[1] は 2 回目のマッチングでキャプチャした値の配列、 といったように結果の順序を指定します。 このフラグは、preg_match_all() でのみ使用されます。
PREG_OFFSET_CAPTURE PREG_SPLIT_OFFSET_CAPTURE の説明を参照してください。 このフラグは、PHP 4.3.0 以降で利用可能です。
PREG_SPLIT_NO_EMPTY このフラグは、preg_split() が、空文字列でないものだけ を返すようにします。
PREG_SPLIT_DELIM_CAPTURE このフラグは、preg_split() が 文字列分割用のパターン中のカッコによるサブパターンでキャプチャされた値も 同時に返すようにします。 このフラグは、PHP 4.0.5 以降で利用可能です。
PREG_SPLIT_OFFSET_CAPTURE このフラグを設定した場合、各マッチに対応する文字列のオフセットも返されます。 これにより、返り値は配列となり、配列の要素 0 はマッチした文字列、 要素 1 は対象文字列中におけるマッチした文字列のオフセット値となることに注意してください。 このフラグは、PHP 4.3.0 以降で利用可能で、 preg_split() のみで使用されます。
PREG_NO_ERROR エラーが存在しなかった場合に preg_last_error() から返されます。 PHP 5.2.0 以降で使用可能です。
PREG_INTERNAL_ERROR PCRE 内部エラーが発生した場合に preg_last_error() から返されます。 PHP 5.2.0 以降で使用可能です。
PREG_BACKTRACK_LIMIT_ERROR backtrack limit に達した場合に preg_last_error() から返されます。 PHP 5.2.0 以降で使用可能です。
PREG_RECURSION_LIMIT_ERROR recursion limit に達した場合に preg_last_error() から返されます。 PHP 5.2.0 以降で使用可能です。
PREG_BAD_UTF8_ERROR 壊れている UTF8 データによって直近のエラーが発生した場合に preg_last_error() から返されます (UTF-8 モード で正規表現を実行した場合のみ)。 PHP 5.2.0 以降で使用可能です。

例 1608. 有効なパターンの例
  • /<\/\w+>/
  • |(\d{3})-\d+|Sm
  • /^(?i)php[34]/
  • {^\s+(\s+)?$}


例 1609. 無効なパターンの例
  • /href='(.*)' - 終端デリミタが抜けている
  • /\w+\s*\w+/J - 未知の修飾子 'J'
  • 1-\d3-\d3-\d4| - 始端デリミタが抜けている


目次

パターン修飾子 — 正規表現パターンに使用可能な修飾子
パターン構文 — PCRE 正規表現の説明
preg_grep — パターンにマッチする配列の要素を返す
preg_last_error — 直近の PCRE 正規表現処理のエラーコードを返す
preg_match_all — 繰返し正規表現検索を行う
preg_match — 正規表現によるマッチングを行う
preg_quote — 正規表現文字をクオートする
preg_replace_callback — 正規表現検索を行い、コールバック関数を使用して置換を行う
preg_replace — 正規表現検索および置換を行う
preg_split — 正規表現で文字列を分割する

Perl Compatible Regular Expressions

(PCRE から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/07/21 04:52 UTC 版)

PCRE: Perl Compatible Regular Expressions)は、Perl 5 互換の正規表現C言語で実装したライブラリである。BSDライセンスで配布されている[2]。 元は、メール転送エージェントExim のために書かれたものであったが[3]、現在では、Apache[4]Postfix[5]Nmap[6]Safari[7]Maildrop[8]などをはじめとした多数のソフトウェアに組み込まれている[3]


  1. ^ [pcre-dev Final release of PCRE1]”. 2023年7月21日閲覧。
  2. ^ licence.txt”. 2009年5月31日閲覧。
  3. ^ a b PCRE - Perl Compatible Regular Expressions”. 2009年5月31日閲覧。
  4. ^ Overview of new features in Apache 2.2”. 2009年5月31日閲覧。
  5. ^ Postfix PCRE Support”. 2009年5月31日閲覧。
  6. ^ Module pcre”. 2009年5月31日閲覧。
  7. ^ Safari 3 Beta Update 3.0.3 のセキュリティコンテンツについて”. 2009年5月31日閲覧。
  8. ^ maildropfilter”. 2009年5月31日閲覧。


「Perl Compatible Regular Expressions」の続きの解説一覧

PCRE

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/13 20:23 UTC 版)

正規表現」の記事における「PCRE」の解説

Perl互換ライブラリEximのために開発されApachePostfixをはじめ、さまざまなソフトウェア組み込まれている。

※この「PCRE」の解説は、「正規表現」の解説の一部です。
「PCRE」を含む「正規表現」の記事については、「正規表現」の概要を参照ください。

ウィキペディア小見出し辞書の「PCRE」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「PCRE」の関連用語

PCREのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



PCREのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2024 by the PHP Documentation Group.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのPerl Compatible Regular Expressions (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの正規表現 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS