正規表現 (39)

WBOY
リリース: 2016-08-08 09:23:23
オリジナル
807 人が閲覧しました

正規表現の概要:

??正規表現は、文字の配置とパターンの一致を記述するために使用される文法規則です。これは主に、文字列のパターン分割、マッチング、検索、置換操作に使用されます。これまで使用してきた完全な (テキスト) 一致も正規表現です。
??PHP では、正規表現は通常、通常の文字といくつかの特殊文字 (ワイルドカードに似た) の組み合わせで構成されるテキスト パターンをプログラム的に記述したものです。

??PHP では、正規表現には

??マッチングという 3 つの機能があり、文字列から情報を抽出するためによく使用されます。
??一致するテキストを新しいテキストに置き換えます。
??文字列を小さな情報のセットに分割します。
??正規表現には少なくとも 1 つのアトムが含まれています

PHP には 2 つの正規表現関数ライブラリのセットがあり、その 2 つの機能は似ていますが、実行効率はわずかに異なります。 ?1セット PCRE(Perl互換正規表現)ライブラリにより提供されます。接頭辞「preg_」が付いた名前の関数。

??POSIX (Portable Operating System Interface of Unix) 拡張機能によって提供される関数のセット。 「ereg_」という接頭辞が付いた名前の関数を使用します。 正規表現を使用する理由の 1 つは、一般的な検索および置換操作では、オブジェクトの動的テキストの検索が困難、または不可能であることです。
正規表現の文法規則
PCRE正規表現:

??PCREはPerl互換正規表現の略で、Perl互換の正規表現を意味します。

??PCRE は Perl 言語に由来しており、Perl は文字列操作に最も強力な言語の 1 つです。PHP の初期バージョンは Perl によって開発された製品です。
??PCRE 構文は、より多くの機能をサポートし、POSIX 構文よりも強力で、同じ機能関数を実装しており、PCRE ライブラリを使用する際に若干の利点があります。しかし、彼らには多くの共通点もあります。
??PCRE では、パターン式 (正規表現) は通常、「/apple/」のように 2 つのバックスラッシュ「/」で囲まれます。ユーザーは、一致する必要があるパターンの内容を区切り文字の間に入れるだけで済みます。区切り文字は「/」に限定されません。区切り文字としては、「#」、「|」、「!」など、文字、数字、スラッシュ「」以外の文字が使用できます。
Atom (アトム)
Atom は、正規表現を分析する場合、全体として扱う必要があります。

??原子文字には、すべての英語の文字、数字、句読点、その他の記号が含まれます。原子には以下のものも含まれます。

??a ~ z、A ~ Z、0 ~ 9 などの単一の文字、数字。
??(ABC) などのモデル単位は、複数の原子から構成される大きな原子として理解できます。
??[ABC] などのアトミック テーブル。
??再利用されたパターン単位 (例: \1
??一般的なエスケープ文字 (例: d、D、w
)?? エスケープ メタ文字 (例: *、.
) Commonエスケープ文字
原子の説明

-------------------------------------- --------- --------------------------------

d 同等の数字と一致します。 to [0-9]
D 数字以外の任意の文字に一致、[^0-9]
w [0-9a-zA-Z_]に相当する英語の文字、数字、またはアンダースコアに一致します。
W 英文字以外の任意の文字と一致します。[^0-9a-zA-Z_] に相当します。
s は空白文字と一致します。
S は空白文字を除く任意の文字と一致します。文字など。 [^fnrtv]
f に相当します。 x0c または cL に相当するフォーム フィード文字に一致します。 x0a または cJ
r に相当する復帰文字に一致します。または cM
t タブ文字に一致します。x09 または cl
v 垂直タブ文字に一致します。x0b または ck に相当します
oNN 8 進数に一致します。 cC 制御文字と一致します
メタ文字 (メタ文字)

メタキャラクターは、正規表現を構築するために使用される特別な意味を持つ文字です。メタキャラクターそのものを正規表現に含めたい場合は、その前に「」を追加してエスケープする必要があります
メタキャラクターの説明
-- -- ------------------------------------------------
* 0 回、1 回以上はその前のアトムと一致します
+ 1 回以上はその前のアトムと一致します
? 2 つまたは複数の選択肢と一致します
^ または A は文字列の先頭のアトムと一致します
$ または Z は文字列の末尾のアトムと一致します
b 単語の境界と一致します
B 文字列以外の部分と一致します単語の境界
[] 角括弧内の任意の原子と一致します
[^] 角括弧内の原子を除く任意の文字と一致します
{m} 前の原子が正確に m 回出現することを示します
{m ,n} 前の原子が少なくとも m 回、少なくとも n 回出現することを示します (n>m)
{m,} 前の原子が m 回以上出現することを示します
() 原子を表します全体として
. 一致と除算 改行を除く任意の文字
文字列境界の制限

場合によっては、より正確な一致結果を得るために一致範囲を制限する必要があります。 「^」と「$」はそれぞれ文字列の先頭と末尾を指定します。

??たとえば、「トムとジェリーは、トムが家に来るまで家でお互いを追いかけました」という文字列では、
??メタ文字「^」または「A」が文字列の先頭に配置されます。パターン一致が文字列の先頭で発生することを確認します。
/^Tom/
?? パターン一致が最後に発生するように、メタ文字「$」または「Z」が文字列の末尾に配置されます。文字列の。
/in$/
??境界制限メタキャラクターを追加しない場合、より多くの一致結果が得られます。
/^Tom$/完全一致/Tom/あいまい一致
単語境界制限

各種編集ソフトの検索機能を使用する場合、「単語で検索」を選択すると、より正確な結果が得られます。同様の機能が正規表現でも利用できます。

??例: 「この島は美しい土地です」という文字列では、
?? メタ文字「b」は単語の境界に一致しますが、単語「is」には一致しません。 「ここ」と「島」。
/bis/ は、"is" の単語 "is" および "is" に一致しますが、"This" には一致しません
?? メタ文字 "B" は、単語の境界の外側に一致します。
/BisB/ は、単語の左右の境界には一致せず、単語の内部のみに一致することを明示的に示します。したがって、この例では結果はありません。
/Bis/ は単語「This」の「is」と一致します
繰り返し一致

正規表現には、特定のアトムと繰り返し一致するために使用されるメタ文字がいくつかあります:「?」、「*」 、「+」。それらの主な違いは、繰り返される一致の数です。

??メタキャラクター「?」: 直前のアトムとの一致が 0 回または 1 回行われたことを示します。

例: /colou?r/ は、「colour」または「color」に一致します。
??メタキャラクター「*」: 直前のアトムの 0、1、または複数の一致を示します。
例: /zo*/ は z、zoo
?? メタ文字「+」: 直前のアトムと 1 回以上一致することを示します。
例: /go+gle/ は、「gogle」、「google」、または「gooogle」、および中央に複数の o を含むその他の文字列と一致します。
任意の文字

メタ文字「.」は改行を除く任意の文字と一致します。

?? [^n] (Unix システム) または [^rn] (Windows システム) と同等です。

??例: /pr.y/ は、文字列 "prey"、"pray"、または "pr%y" などに一致します。
??通常、「.*」の組み合わせを使用して、改行を除く任意の文字と一致させることができます。書籍によっては、「完全一致」または「単一包括一致」と呼ばれることもあります。
??例:
??/^a.*z$/ は、文字「a」で始まり文字「z」で終わる、改行文字を含まない任意の文字列と一致することを意味します。
??/.+/ も同様のマッチング関数を完成させることができますが、異なる点は少なくとも 1 つの文字と一致することです。
??/^a.+z$/ は "a%z" に一致しますが、文字列 "az" には一致しません
アトミック テーブル - 角括弧式

アトム テーブル "[]" には、互いに等しく、アトムの 1 つだけと一致するアトムのグループが格納されます。 「a」または「e」と一致させたい場合は、[ae] を使用します。
??例: Pr[ae]y は、「Pray」または「Prey」に一致します。
??アトム テーブル "[^]" は除外アトム テーブルとも呼ばれ、テーブル内のアトムを除く任意の文字と一致します。
??例: /p[^u]/ は、「part」の「pa」と一致しますが、「u」が一致から除外されるため、「computer」の「pu」と一致することはできません。
??アトムテーブル「[-]」は、記述を簡素化するためにASCIIコード順に並べられたアトムのグループを接続するために使用されます。
??例: /x[0123456789]/ は x[0-9] と書くことができ、これは文字「x」と数字で構成される文字列と一致するために使用されます。
??例:
??/[a-zA-Z]/すべての大文字と小文字に一致
??/^[a-z][0-9]$/「z2」などに一致", " t6", "g7"
??/0[xX][0-9a-fA-F]/ は、「0x9」などの単純な 16 進数と一致します。
??/[^0-9a-zA-Z_]/ は、英語の文字、数字、アンダースコアを除く任意の文字に一致します。これは W に相当します。
??/0?[ xX][0-9a-fA-F]+/ は、「0x9B3C」や「X800」などに一致する 16 進数に一致します。
??/<[A-Za-z][A-Za-z0-9]*>/ は、「

」、「」、または「」に一致します。 HTML タグであり、大文字と小文字は厳密に制御されません。

パターンセレクター

メタキャラクター「|」はパターンセレクターとも呼ばれます。正規表現内の 2 つ以上の選択肢の 1 つと一致します。
??例:
??文字列「There are many apple and pears.」では、/apple|pear/ は、最初に実行されたときは「apple」と一致し、実行されたときは「pear」と一致します。再び実行されます。 /apple|pear|banana|lemon/

パターン単位

メタ文字「()」は、正規表現を使用するアトム (またはパターン単位) に変換します。 。数式の括弧と同様に、「()」を単独で単位として使用できます。
??例:
??/(Dog)+/ は、「Dog」、「DogDog」、「DogDogDog」に一致します。これは、「+」の直前のアトムがメタ文字「()」で囲まれているためです。 "犬"。
??/あなた (とても)+ 古い/「とても古い」、「とても古い」と一致します
??/Hello (world|earth)/「Hello world」、「Hello Earth」と一致します
??パターン単位の式が最初に照合または評価されます。

パターンユニットの再利用

システムは一致したものをパターンユニット「()」に順番に自動的に保存し、必要に応じて「1」、「2」、「3」の形式で参照できます。この方法は、正規表現に同じパターン単位が含まれる場合に、正規表現を管理する場合に非常に便利です。使用する場合は「\1」と「\2」を記述する必要があることに注意してください
例:
??/^d{2}([W])d{2}\1d{4}$ /「12-31-2006」、「09/27/1996」、「86 01 4321」およびその他の文字列に一致します。しかし、上記の正規表現は「12/34-5678」の形式と一致しません。これは、パターン「[W]」の結果「/」がすでに格納されているためです。次の位置「1」が参照される場合、その一致パターンも文字「/」になります。
??マッチング結果を保存する必要がない場合は、非保存パターン単位「(?:)」を使用してください
??例: /(?:a|b|c)(D|E| F)\1g/ は「aEEg」と一致します。一部の正規表現では、非ストレージ モード単位を使用する必要があります。それ以外の場合は、後続の参照の順序を変更する必要があります。上記の例は、/(a|b|c)(C|E|F)\2g/ と書くこともできます。


以上、内容面も含めて正規表現(39)を紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!