ホームページ >バックエンド開発 >PHPチュートリアル >PHP 正規表現入門チュートリアル [翻訳]、正規表現入門チュートリアル_PHP チュートリアル

PHP 正規表現入門チュートリアル [翻訳]、正規表現入門チュートリアル_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:52:21966ブラウズ

PHP正規表現入門チュートリアル[翻訳]、正規表現入門チュートリアル

マインドマップ 具体的な内容は下の画像をクリックしてご覧ください!

​ ​ はじめに ​ 開発では正規表現を頻繁に使用する必要があります。現在、JavaScript、Java、.net、php などの多くの開発言語に正規表現アプリケーションがあります。今日は、正規表現についての私の理解を共有します。 、不適切だったら教えてください! ​ 知っておくべき用語 – 次の用語についてどの程度知っていますか? ​ Δ区切り文字 Δ 文字フィールド Δ修飾子 Δ修飾子 Δキャレット Δ ワイルドカード (順方向プレビュー、逆方向プレビュー) Δ後方参照 Δ 遅延マッチング Δ コメント Δ 文字幅ゼロ ​ ポジショニング ​ 正規表現はいつ使用するのでしょうか?すべての文字操作に正規表現を使用するだけでは十分ではありません。PHP はいくつかの側面で正規表現を使用しますが、これは実際に効率に影響します。複雑なテキスト データの解析が必要な場合は、正規表現を使用することをお勧めします。 ​ メリット ​ 正規表現を使用すると、複雑な文字操作を処理する際の作業効率が向上し、コードをある程度節約できます。 ​ デメリット ​ 正規表現を使用する場合、正規表現が複雑になるとコードが複雑になり、理解しにくくなります。そのため、正規表現内にコメントを追加する必要がある場合があります。 ​ コモンモード

​ ¤ 区切り文字。区切り文字の最初と最後には通常「/」が使用されますが、「#」も使用できます。 「#」を使用するのはどのような場合ですか? 通常、文字列に「/」文字が多数含まれる場合、そのような文字は uri などの正規表現でエスケープする必要があるためです。 「/」区切り文字を使用したコードは次のとおりです。
$regex = '/^http://([w.]+)/([w]+)/([w]+).html$/i'; $str = 'http://www.youku.com/show_page/id_ABCDEFG.html'; $matches = array();if(preg_match($regex, $str, $matches)){     var_dump($matches); }echo "n";

preg_match の $matches[0] には、パターン全体に一致する文字列が含まれます。

「#」区切り文字を使用したコードは以下の通りです

このとき、「/」はエスケープされません。
$regex = '#^http://([w.]+)/([w]+)/([w]+).html$#i'; $str = 'http://www.youku.com/show_page/id_ABCDEFG.html'; $matches = array();if(preg_match($regex, $str, $matches)){     var_dump($matches); }echo "n";

¤ 修飾子: 正規表現の動作を変更するために使用されます。

('/^http://([w.]+)/([w]+)/([w]+).html/i') の最後の「i」は修飾子が無視することを意味します私たちがよく使うもう 1 つの文字は、スペースを無視することを意味する「x」です。

貢献コード:

$regex = '/HELLO/'; $str = 'hello word'; $matches = array();if(preg_match($regex, $str, $matches)){     echo 'No i:Valid Successful!',"n"; }if(preg_match($regex.'i', $str, $matches)){     echo 'YES i:Valid Successful!',"n"; }

¤ 文字フィールド: [w] 角括弧で展開された部分が文字フィールドです。

¤ 修飾子: [w]{3,5}、[w]*、[w]+ など、[w] の後の記号はすべて修飾子を表します。具体的な意味をご紹介します。

{3,5} は 3 ~ 5 文字を意味します。 {3,} は 3 文字を超え、{,5} は最大 5 文字、{3} は 3 文字です。

* は 0 からそれ以上を意味します

+ は 1 からそれ以上を意味します。

¤キャレット

^:

放 & gt; 文字ドメイン ([^w] など) を入力して、否定 (意味を除く) を示します - 「選択を反転」

️式の前に配置して、現在の文字から始めることができます。 (/^n/i、n で始まることを意味します)。

注意してください、私たちはしばしば「」エスケープ文字と呼びます。 「.」、「/」などの特殊記号をエスケープするために使用されます

ワイルドカード (ルックアラウンド): 特定の文字列内の特定の文字の有無をアサートします。 ​ ルックアラウンドには、先読み (前方参照 ?=) と後読み (逆引き ?<=) の 2 種類があります。 > 形式: 肯定的な検索: (?!) に対応する (?=) は否定的な意味を意味します 逆プレルックアップ: (?<=) 対応する (?

否定的な意味:

$regex = '/(?<=c)d(?=e)/'; /* d 前面紧跟c, d 后面紧跟e*/$str = 'abcdefgk'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "n";
$regex = '/(?<!c)d(?!e)/'; /* d 前面不紧跟c, d 后面不紧跟e*/ $str = 'abcdefgk'; $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches); }echo "n";

> 文字幅: 0 ゼロ文字コードを検証する
$regex = '/HE(?=L)LO/i'; $str = 'HELLO'; $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches); }echo "n";

結果は印刷できません!

$regex = '/HE(?=L)LLO/i'; $str = 'HELLO'; $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches); }echo "n";

結果を印刷できます!

説明: (?=L) は、HE の後に L 文字が続くことを意味します。ただし、(?=L) 自体は 1 文字を占有しないため、それ自体が 1 文字を占有する (L) とは区別する必要があります。

​ キャプチャデータ ​ タイプを指定しないグループ化は、後で使用するために取得されます。 > は、タイプがワイルドカード文字を参照していることを示します。したがって、括弧の先頭に疑問符のないもののみがキャプチャされます。

> 同じ式内の参照は後方参照と呼ばれます。 > 呼び出し形式: 番号 (1 など)。
$regex = '/^(Chuanshanjia)[ws!]+1$/'; $str = 'Chuanshanjia thank Chuanshanjia'; $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches); }echo "n";

> データのキャプチャを避ける 形式:(?:パターン) 利点: 有効な後方参照の数が最小限に抑えられ、コードがより明確になります。 ​ > 名前付きキャプチャ グループ 形式: (?P<グループ名>) 呼び出しメソッド (?P=グループ名)
$regex = '/(?P<author>chuanshanjia)[s]Is[s](?P=author)/i'<code class="php plain">; $str = 'author:chuanshanjia Is chuanshanjia'; $matches = array();if(preg_match($regex, $str, $matches)){     var_dump($matches); }echo "n";

実行結果

遅延マッチング (覚えておいてください: 2 つの操作が実行されます。以下の原則部分を参照してください)

形式:修飾子?

原則: "?": 前に修飾子がある場合、最小のデータが使用されます。たとえば、「*」には 0、「+」には 1 がかかります。{3,5} の場合は 3 がかかります。

まず次の 2 つのコードを見てください:

コード 1.

<?php $regex = '/heL*/i'; $str = 'heLLLLLLLLLLLLLLLL'; if(preg_match($regex, $str, $matches)){     var_dump($matches); }echo "n";

結果1.

コード2

<?php $regex = '/heL*?/i'; $str = 'heLLLLLLLLLLLLLLLL'; if(preg_match($regex, $str, $matches)){     var_dump($matches); }echo "n";

結果2

コード 3、「+」を使用します

<?php $regex = '/heL+?/i'; $str = 'heLLLLLLLLLLLLLLLL'; if(preg_match($regex, $str, $matches)){     var_dump($matches); }echo "n";

結果3

コード 4、{3,5} を使用します

<?php $regex = '/heL{3,10}?/i'; $str = 'heLLLLLLLLLLLLLLLL'; if(preg_match($regex, $str, $matches)){     var_dump($matches); }echo "n";

結果4

​ ​

正規表現に関するコメント ​ 形式: (?# コメント内容) 目的: 主に複雑な注釈に使用されます。 ​ 貢献コード: MYSQL データベースに接続するために使用される正規表現です。
$regex = '/     ^host=(?<!.)([d.]+)(?!.)                 (?#主机地址) |     ([w!@#$%^&*()_+-]+)                       (?#用户名) |     ([w!@#$%^&*()_+-]+)                       (?#密码) (?!|)$/ix';$str = 'host=192.168.10.221|root|123456'; $matches = array();if(preg_match($regex, $str, $matches)){     var_dump($matches); }echo "n";

​ 特殊文字 ​ ​
特殊文字 説明
* 0回から複数回
+ 1回から複数回は{1,}と書くこともできます
? 0回または1回
. 改行を除くすべての単一文字と一致します
w [a-zA-Z0-9_]
空白文字 (スペース、改行、復帰) [tnr]
d [0-9]

www.bkjia.com本当http://www.bkjia.com/PHPjc/1127374.html技術記事 PHP正規表現入門チュートリアル【再版】、正規表現入門チュートリアル マインドマップ、具体的な内容は下の画像をクリックしてご覧ください! 開発でよく使う正規表現をご紹介します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。