ホームページ >バックエンド開発 >PHPチュートリアル >PHP 正規表現入門チュートリアル [翻訳]、正規表現入門チュートリアル_PHP チュートリアル
$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.
結果1.
コード2
結果2
コード 3、「+」を使用します
結果3 コード 4、{3,5} を使用します
結果4 正規表現に関するコメント 形式: (?# コメント内容) 目的: 主に複雑な注釈に使用されます。 貢献コード: MYSQL データベースに接続するために使用される正規表現です。
特殊文字
声明: この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |