ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルの正規表現と PCRE 関数
PHP には、正規表現を使用する 2 つの異なる方法があります。PCRE (Perl 互換表記、preg_*) 関数と POSIX (POSIX 拡張表記、ereg_*) 関数です。幸いなことに、POSIX ファミリの関数は PHP 5.3.0 から非推奨になりました。
一般的に使用される区切り文字は、スラッシュ (/)、ハッシュ記号 (#)、および否定記号 (~) です。次の例はすべて、正当な区切り文字を使用したパターンです
リーリー終了区切り文字の後にパターン修飾子を追加できます
一部の文字には特別な意味が与えられ、単にそれ自体を表すだけではなくなります。パターン内で特別な意味を持つこのタイプのコード化された文字は 元字符
と呼ばれます。
メタキャラクター | 説明 |
---|---|
通常、文字をエスケープするために使用されます | |
^ | ターゲットの開始位置(または複数行モードの場合は行の先頭)をアサートします |
$ | ターゲットの終了位置(または複数行モードの行末)をアサートします |
. | 改行を除く任意の文字と一致します (デフォルト) |
[ | 文字クラス定義の開始 |
] | 文字クラス定義の終了 |
| | オプションのブランチを開始する |
( | サブグループの開始タグ |
) | サブグループの終了タグ |
? | 数量詞として、0 または 1 の一致を意味します。量指定子の後に配置して、量指定子の貪欲な性質を変更します。 (数量詞を調べてください) |
* | 数量子、0 個以上の一致 |
+ | 数量指定子、1 つ以上の一致 |
{ | カスタマイズされた量指定子の開始タグ |
} | カスタマイズされた量指定子終了タグ |
パターンの角括弧で囲まれた部分は「文字クラス」と呼ばれます。 文字クラス内で使用できる唯一のメタキャラクターは次のとおりです
メタキャラクター | 説明 |
---|---|
エスケープ文字 | |
^ | 最初の文字 (角括弧内) として使用される場合のみ、文字クラスの否定を示します |
- | 文字範囲をマークする |
角括弧内の内容は文字クラスです
いくつかの事前定義された文字クラスがあります
キャラクタークラス | 説明 |
---|---|
d | 任意の 10 進数 |
D | 10 進数以外の任意の数値 |
え | 水平方向の空白文字 (PHP 5.2.4 以降) |
ひ | 水平以外の空白文字 (PHP 5.2.4 以降) |
す | 任意の空白文字 |
S | 空白以外の文字 |
任意の垂直空白文字 (PHP 5.2.4 以降) | |
V | 垂直以外の空白文字 (PHP 5.2.4 以降) |
w | 任意の単語文字 |
わ | 単語以外の文字 |
としてabc
として
数量化子 | |
---|---|
* | は {0,} | と同等です
+ | は {1,} | と同等です
? | {0,1}に相当 |
简单的断言代码有、B、 A、 Z、z、 ^、$
从当前位置向前测试
(?=)
(?!)
w+(?=;)
匹配一个单词紧跟着一个分号但是匹配结果不会包含分号
从当前位置向后测试
(?<=)
(?<!--)</code-->
<code>(?<!--foo)bar</code-->用于查找任何前面不是 ”foo” 的 ”bar”
<code>模式修饰符
<code>模式修饰符
|
|
---|---|
<code>U |
<code>这个修饰符逆转了量词的”贪婪”模式,使量词默认为非贪婪的 |
<code>i |
<code>大小写不敏感匹配 |
<code>x |
<code>忽略空白 |
<code>s |
<code>点号元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行符 |
<code>… |
<code>PCRE 函数
<code><code><code>preg_filter — 执行一个正则表达式搜索和替换 preg_grep — 返回匹配模式的数组条目 preg_last_error — 返回最后一个PCRE正则执行产生的错误代码 preg_match_all — 执行一个全局正则表达式匹配 preg_match — 执行一个正则表达式匹配 preg_quote — 转义正则表达式字符 preg_replace_callback_array — Perform a regular expression search and replace using callbacks preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换 preg_replace — 执行一个正则表达式的搜索和替换 preg_split — 通过一个正则表达式分隔字符串 </code></code></code>