Downloads
Documentation
Get Involved
Help
Search docs
PHP Conference Nagoya 2025
Getting Started
Introduction
A simple tutorial
Language Reference
Basic syntax
Types
Variables
Constants
Expressions
Operators
Control Structures
Functions
Classes and Objects
Namespaces
Enumerations
Errors
Exceptions
Fibers
Generators
Attributes
References Explained
Predefined Variables
Predefined Exceptions
Predefined Interfaces and Classes
Predefined Attributes
Context options and parameters
Supported Protocols and Wrappers
Security
Introduction
General considerations
Installed as CGI binary
Installed as an Apache module
Session Security
Filesystem Security
Database Security
Error Reporting
User Submitted Data
Hiding PHP
Keeping Current
Features
HTTP authentication with PHP
Cookies
Sessions
Handling file uploads
Using remote files
Connection handling
Persistent Database Connections
Command line usage
Garbage Collection
DTrace Dynamic Tracing
Function Reference
Affecting PHP's Behaviour
Audio Formats Manipulation
Authentication Services
Command Line Specific Extensions
Compression and Archive Extensions
Cryptography Extensions
Database Extensions
Date and Time Related Extensions
File System Related Extensions
Human Language and Character Encoding Support
Image Processing and Generation
Mail Related Extensions
Mathematical Extensions
Non-Text MIME Output
Process Control Extensions
Other Basic Extensions
Other Services
Search Engine Extensions
Server Specific Extensions
Session Extensions
Text Processing
Variable and Type Related Extensions
Web Services
Windows Only Extensions
XML Manipulation
GUI Extensions
Keyboard Shortcuts
?
This help
j
Next menu item
k
Previous menu item
g p
Previous man page
g n
Next man page
G
Scroll to bottom
g g
Scroll to top
g h
Goto homepage
g s
Goto search
(current page)
/
Focus search box
PCRE 正規表現構文 »
« 正規表現パターンに使用可能な修飾子
PHP マニュアル
関数リファレンス
テキスト処理
PCRE
PCRE のパターン
Change language:
English
German
Spanish
French
Italian
Japanese
Brazilian Portuguese
Russian
Turkish
Ukrainian
Chinese (Simplified)
Other
Perl との違い
Perl 5.005 との違いについて以下に説明します。
デフォルトでは、空白文字は C ライブラリ関数 isspace() が認識する文字となります。PCRE を別の文字型テーブルを用いて コンパイルすることも可能です。通常、isspace() はスペース、改ページ、 改行、復帰、水平タブ、垂直タブにマッチします。 Perl 5 では、現在、 垂直タブが空白文字として扱われていません。 Perl ドキュメントには \v というエスケープが記載されていましたが、実際は認識されていませんでした。 ただし、垂直タブ文字は少なくとも 5.002 までは空白文字として 処理されていました。 5.004 および 5.005 では、\s にマッチしなくなっています。
PCRE では、先読み言明に量指定子を指定できません。Perl では可能ですが、思ったような動作を意味しないかもしれません。 例えば、(?!a){3} は、続く 3 文字が "a" でないことの言明ではありません。 この指定は、次の 1 文字が "a" ではないことを 3 回言明するだけです。
否定の先読み言明の中に記述したキャプチャ用サブパターンは カウントされますが、対応するオフセットにそのエントリは セットされません。 Perlでは、言明のマッチングに失敗する前に マッチしたパターンからその変数を設定しますが、それが行われるのは、 否定の先読み言明中の選択肢が 1 つだけの場合のみです。
ヌル文字は、検索対象文字列においては使用できますが、 パターン文字列内では使用できません。これは、パターン文字列が 0 を終端とする通常の C 文字列として渡されるためです。パターン中では、 エスケープシーケンス "\x00" を使ってヌル文字を表すことができます。
次の Perl エスケープシーケンスはサポートされせん。 \l, \u, \L, \U。 これらのエスケープシーケンスは、Perl のパターンマッチエンジン内 ではなく、文字列処理の部分で実装されているためです。
Perl の \G 言明は、単一のパターンマッチに対しては意味がなく、 サポートされません。
当然ながら、PCRE により、(?{code}) 構文および (??{code}) 構文はサポートされません。しかし、再帰的なパターンはサポートしています。
Perl 5.005_02 では、パターンの一部を繰り返すと、キャプチャ文字列の セットに関して奇妙な動作をすることがあるようです。例えば、"aba" を パターン /^(a(b)?)+$/ に対してマッチングを行うと、 $2 には値 "b" が設定されますが、"aabbaa" を /^(aa(bb)?)+$/ に対して マッチングを行うと、$2 はセットされません。 しかし、パターンを /^(aa(b(b))?)+$/ に変えると、 $2 (および $3) はセットされます。 Perl 5.004 では、どちらの場合も $2 はセットされます。 PCRE の場合も、 どちらの場合でもセットされます。将来的に Perl が矛盾のない状態に 変更された場合は、PCRE も追従する可能性があります。
他の未解決の食い違いとして、パターン /^(a)?(?(1)a|b)+$/ は、 Perl 5.005_02 では文字列 "a" にマッチしますが、PCRE ではマッチしない ということがあります。しかし、Perl と PCRE のいずれでも、/^(a)?a/ で "a" をマッチした場合は $1 が未定義のままとなります。
PCRE では、Perl の正規表現の機能よりさらに拡張された機能を使うことができます。
戻り読み言明は、固定長の文字列にマッチする必要がありますが、 このとき、戻り読み言明内の選択肢は、それぞれ異なる長さの文字列に マッチするパターンとしても問題ありません。Perl 5.005 では すべての選択肢が同じ長さである必要があります。
PCRE_DOLLAR_ENDONLY
が設定され
PCRE_MULTILINE
が設定されていない場合、メタ文字 $ は文字列の終端にのみ マッチします。
PCRE_EXTRA
を設定すると、バックスラッシュの後に意味がない文字が続くと エラーとなります。
PCRE_UNGREEDY
を設定すると、量指定子の貪欲さが反転します。つまり、量指定子は、 デフォルトで貪欲でなく、疑問符を後ろに付けてはじめて 貪欲になるようになります。
Found A Problem?
Learn How To Improve This Page
•
Submit a Pull Request
•
Report a Bug
+
add a note
User Contributed Notes
There are no user contributed notes for this page.
↑
and
↓
to navigate •
Enter
to select •
Esc
to close
Press
Enter
without selection to search using Google