ホームページ > php教程 > php手册 > PHP の正規表現 (1)

PHP の正規表現 (1)

WBOY
リリース: 2016-06-13 12:37:19
オリジナル
935 人が閲覧しました

PHP の正規表現 (1)
Hunte 2000 年 4 月 14 日


PHP は *NIX の一貫した伝統を継承しており、正規表現の処理を完全にサポートしています。正規表現は、高度ではありますが、直感的ではない文字列の一致と処理の方法を提供します。 PERL の正規表現を使用したことのある友人は、正規表現が非常に強力であることを知っていますが、習得するのは簡単ではありません。
例:

^. @. \.. $

この効果的だが理解できないコードは、一部のプログラマー (私) を頭痛の種にするか、正規表現の使用を諦めさせるのに十分です。モード。このチュートリアルを読み終えると、このコードの意味が理解できると思います。

基本的なパターンマッチング

すべては基本から始まります。パターンは正規表現の最も基本的な要素であり、文字列の特性を記述する文字のセットです。パターンは、通常の文字列で構成される単純な場合もあれば、文字範囲、繰り返し、コンテキストを表すために特殊文字を使用する非常に複雑な場合もあります。例:

^once

このパターンには特殊文字 ^ が含まれており、このパターンは、once で始まる文字列のみと一致することを意味します。たとえば、このパターンは文字列「onceUponatime」には一致しますが、「There Once was a man from NewYork」には一致しません。 ^ 記号が先頭を示すのと同様に、$ 記号は特定のパターンで終わる文字列と一致します。

bucket$

このパターンは、「誰がこの現金をすべてバケットに保管したか」には一致しますが、「buckets」には一致しません。文字 ^ と $ を一緒に使用すると、完全一致を表します (文字列はパターンと同じです)。例:

^bucket$

は文字列「bucket」のみに一致します。パターンに ^ と $ が含まれていない場合は、そのパターンを含む任意の文字列と一致します。例: パターン

once

および文字列

かつてニューヨーク出身の男がいた
誰が現金をすべてバケツに入れていた。

は一致します。

このパターンの文字 (o-n-c-e) はリテラル文字、つまり文字そのものを表しており、数字についても同様です。句読点や白文字 (スペース、タブなど) など、その他の少し複雑な文字にはエスケープ シーケンスが必要です。すべてのエスケープ シーケンスはバックスラッシュ () で始まります。タブ文字のエスケープ シーケンスは次のとおりです。したがって、文字列がタブ文字で始まるかどうかを検出したい場合は、次のパターンを使用できます:

^t

同様に、「改行」を表すには n を使用し、キャリッジを表すには r を使用します。戻る。他の特殊記号は、前にバックスラッシュを付けて使用できます。たとえば、バックスラッシュ自体は \ で表され、ピリオドは . で表されます。

文字クラスタ

インターネット プログラムでは、通常、ユーザー入力を検証するために正規表現が使用されます。ユーザーがフォームを送信するとき、入力された電話番号、住所、電子メール アドレス、クレジット カード番号などが有効かどうかを判断するには、通常のリテラル文字を使用するだけでは十分ではありません。

したがって、必要なパターンを記述するために、より自由な方法、つまり文字クラスターを使用する必要があります。すべての母音文字を表すクラスターを作成するには、すべての母音文字を角括弧で囲みます。

[AaEeIiOoUu]

このパターンは任意の母音文字と一致しますが、表すことができるのは 1 つの文字のみです。次のような文字の範囲を表すにはハイフンを使用します。

[a-z] // すべての小文字と一致します
[A-Z] // すべての大文字と一致します
[a-zA-Z ] / //すべての文字と一致します
[0-9] //すべての数字と一致します
[0-9.-] //すべての数字、ピリオド、マイナス記号と一致します
[ frtn] // すべての白い文字と一致します

繰り返しますが、これらも 1 つの文字のみを表しており、これは非常に重要です。 「z2」、「t6」、「g7」などの小文字と数字で構成される文字列と一致するが、「ab2」、「r2d3」、「b52」とは一致しない場合は、次のパターンを使用します:

^[a-z][0-9]$

[a-z] は 26 文字の範囲を表しますが、ここでは最初の文字が小文字である文字列のみと一致します。

^ は文字列の先頭を表すと前述しましたが、別の意味もあります。 ^ が一連の角括弧内で使用される場合、それは「しない」または「除外する」を意味し、特定の文字を削除するためによく使用されます。前の例を使用すると、最初の文字を数字にすることはできません:

^[^0-9][0-9]$

このパターンは「&5」と同じです。 , 「g7」と「-2」は一致しますが、「12」と「66」は一致しません。特定の文字を除外する例をいくつか示します。

[^a-z] //小文字を除くすべての文字
[^\/^] //()(/)(^) を除くすべての文字
[^"'] //二重引用符 (") と一重引用符 (') を除くすべての文字


特殊文字 "." (ドット、ピリオド) すべてを表すために正規表現で使用されます。 「改行」を除く文字。したがって、パターン「^.5$」は、数字の 5 で終わり、「改行」以外の他の文字で始まる任意の 2 文字の文字列と一致します。パターン「.」は、空の文字列と「改行」のみを含む文字列を除く、任意の文字列と一致します。

PHP の正規表現にはいくつかの組み込みのユニバーサル文字クラスターがあり、そのリストは次のとおりです:

文字クラスターの意味
[[:alpha:]] 任意の文字
[[ :digit :]] 任意の数字
[[:alnum:]] 任意の文字と数字
[[:space:]] 任意の白文字
[[:upper:]] 任意の大文字
[[ : lower:]] 任意の小文字
[[:punct:]] 任意の句読点
[[:xdigit:]] 任意の 16 進数 ([0-9a-fA-F]

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート