ホームページ > バックエンド開発 > PHPチュートリアル > Xin Xing が PHP の正規表現を素早く習得できるように教えます

Xin Xing が PHP の正規表現を素早く習得できるように教えます

WBOY
リリース: 2016-06-23 13:53:28
オリジナル
954 人が閲覧しました

まず初めに言っておきますが、この記事も数人の偉い人のブログを読んでまとめたものですので、その数の多さに敬意を表したいと思います。ソースが散在しているので、一つずつ紹介することはしません、申し訳ありません。

************クロスランゲージテーマ******************

1. XML、JSON、Cookie、セッションと同じように、 get、post などのトピックは同じです。正規表現は複数の言語にまたがるトピックです。言語が文字列をサポートしている限り、正規表現をサポートする必要があると言えます。関数は正規表現を使用しません。式は特に面倒ですが、正規表現を使用すると非常に簡単になります。

2. 正規表現はメール、QQ、携帯電話番号などの認証に使用でき、Web ページの収集にも使用できます。 もちろん、率直に言って、正規表現は文字に対するほとんどの操作に使用できます。もちろん、XML などのファイルを解析する場合、正規表現はそれほど強力ではありませんが、XML 内の特定のテキスト情報を抽出する場合には依然として非常に強力です。

3. したがって、将来どの言語に切り替えても、正規表現をしっかり学ぶのは非常に簡単です。


****************正規表現の役割************

1 正規表現には主に 3 つの機能があります。 、1 つ目は通常のマッチング、2 つ目は通常の置換、3 つ目は通常の抽出です。

2. いわゆる正規一致とは、テキストの文字列が特定の正規表現ルールに準拠しているかどうかを確認することです。たとえば、ユーザーが電子メール アドレスを持っているかどうかを確認するために正規一致を使用します。

3. いわゆる定期的な置換とは、テキスト内の特定の情報を別の情報に置き換えることを意味し、ワード エディターの検索と置換機能に似ており、エラーを迅速に修正できます。

4. いわゆる正規抽出とは、正規表現に基づいてテキストから必要な情報を抽出し、その内容に基づいて Xin Xing が PHP の正規表現を素早く習得できるように教えます タグを取得することを意味します。 src 属性。画像へのすべてのハイパーリンクは、大量のテキスト情報の文字列から使用する情報を抽出するために使用されます。

5. まず正規表現の書き方を学び、次に PHP で正規表現関数を使用して正規表現を操作する方法を学びます。


*******************正規表現の書き方ルール1******************

1.正規表現 通常、/ は区切り文字として使用されます。つまり、2 つのスラッシュの間の部分が正規表現ルールとみなされます。たとえば、正規表現 /xinxing/ は、文字のみと一致することを意味します。 .文字列西興。

2. 上で見たように、文字は正規表現で使用でき、その機能は一致する文字と同等です。ただし、正規表現には、これらの文字を操作するためのメタ文字も用意されています。これらのメタキャラクターの前には、主役と呼ばれる文字が付けられます。主役とメタキャラクターは連携して機能します。

3. + は、その先頭文字がターゲット内に 1 回以上出現することを示し、* はその先頭文字がターゲット内に 0 回以上出現することを示し、? はその先頭オブジェクトがターゲット内に連続的に出現する必要があることを示します。ターゲット オブジェクトが 0 回または 1 回、次のものは無視されます。

4. たとえば、/xin+/ は xin、xinnnn、xinn、xinnnnn などに一致します。これは、ここでの + により n が 1 回または複数回出現することができ、xin?その後、先頭に xin がある限り、xixing、xingui、xinguimeng などの文字と一致させることができます。

5. メタキャラクターは、回数を指定する非常に大まかな方法​​です。たとえば、{m, n} は、少なくとも m 回、最大で n 回出現することを意味します。は少なくとも m 回出現することを意味し、{,n} は最大 n 回出現することを意味し、{t} は固定回数 t 回出現することを意味します。

6. たとえば、/xin{3,4}/ は xinnn と xinnnn の両方に一致します。


**************正規表現の書き方ルール2************************

1. 単一の文字を先頭文字として使用するのは明らかに非常に弱いです。これをボス バージョンにすることができます。s はタブや改行を含む単一のスペース文字と一致することを意味します。 d を除く単一の空白文字と一致するために使用され、d は 0 ~ 9 の文字と一致するために使用され、w は英数字のアンダースコアと一致するために使用され、W は w と一致しないすべての文字に使用されます。単一ピリオドは、改行を除くすべての文字をスキミングすることを示します。上記のデータからわかるように、s と S は、w と W と同様に、まったく逆の意味を持ちます。

2. たとえば、/s+/ は n 個のスペースと一致するのに使用でき、/d00/ は 000、100、200 などの整数 100 個の数字と一致します。

**************** 正規表現におけるロケーターと範囲表現*********

1 いわゆる正規表現もあります。ポジショナー引数。^ は文字列の先頭に出現する必要があり、$ は文字列の末尾に出現する必要があり、b はターゲット文字列の先頭または末尾に出現する必要があります。また、B は先頭に出現することはできません。また、末尾は中盤のみ登場。

2. 実際、^ と $ は対義語であり、b と B も対義語であることがわかります。

3. 角括弧を使用して文字を表し、その範囲を指定できます。たとえば、/[a-z]/ は a から z までの小文字を表します。 9. /[a-c2-6]/ などの数字は、a ~ c​​ または 2 ~ 6 の文字または数字と一致することを意味します。

4. この範囲修飾子は、/ [a-z などのメタ文字と接続できます。 ][0-9]+/ は、文字で始まり、その後に 1 つ以上の数字が続くことを意味します。

5. 除外を表すために角括弧内で使用される否定記号 ^ もあります。たとえば、[^a-c] が角括弧内にある場合、それは否定を示します。括弧の外側では、ロケーターとして扱われます。

6. 通常、エスケープ記号を使用します。たとえば、* は * 記号と一致することを意味します。


**********************ご両親********************** **

1. 前に述べたように、元のキャラクターは複数のキャラクターを括弧で囲むことができます。全体として、メタキャラクターは複数のキャラクターを操作できます。

2. たとえば、a(bc)* は、a の後に 0 個以上の bc が続くことを意味します。

3. たとえば、a(bc){0,7} は、a の後に 0 ~ 7 bc が続くことを意味します。

4. OR、つまり 2 つのうちの 1 つを選択することを意味する | もあります。

5. たとえば、hi|hello は hi または hello に一致することを意味し、(a|b)c は ac または bc に一致することを意味します。


**************小さなエクササイズ******************

1.ここから進んでください。 どれだけ習得したかを確認するために、少しドリルをしてみましょう。

2. 実際、ab* と ab{0,} は同じ意味を表します。ab? は a または ab に一致することを意味します。



**************************備考**************** *

1. 上記では正規表現の最も重要な部分を説明しましたが、いくつかの詳細は考慮されていませんでした。以下でより重要な部分について説明します。

2. 先ほど、区切り文字として / を使用すると述べましたが、実際、正規表現で / が頻繁に使用される場合には、区切り文字として # を使用することもできます。逃げられること。

3. 大文字と小文字を区別しないことを示すために、正規表現の末尾に i を追加します。

4. グループ化することができます。呼び出し形式は (?P) メソッド (?P=グループ名) です。

******************PHP 関数******************

1 を使用します。正規一致関数を完成させるには、最初のパラメータは正規表現、2 番目のパラメータは一致するテキスト、3 番目のパラメータはオプションで、一致した情報を示します。実際には 5 つのパラメータがありますが、多くの場合はパラメータがありません。あまり多くのコードを使用しない場合は、次のコード例を使用します:

<?php//定义一个正则表达式$reg ="/xi/";//定义一个字符文本$msg ="xinxisgxagxiagslgxigsghg";//这里使用了全部匹配preg_match_all($reg,$msg,$match);//输出匹配到的全部信息print_r($match);
ログイン後にコピー
2。上記の例の出力結果は次のとおりです:
Array ( [0] => Array ( [0] => xi [1] => xi [2] => xi [3] => xi ) )
ログイン後にコピー
3。たとえば、次のコードを使用して、すべての xi を oo に置き換えます。コードのスクリーンショット:

<?php//定义一个正则表达式$reg ="/xi/";//定义一个字符文本$msg ="xinxisgxagxiagslgxigsghg";//定义替换文本$rep = "oo";//这里使用了全部匹配$str = preg_replace($reg,$rep,$msg);//输出匹配到的全部信息echo $str;
ログイン後にコピー
4 。出力結果: oonoosgxagooagslgoogsghg

5. 通常の分割では、preg_split 関数を使用して、対応する形式の配列に分割します。コード例:

<?php//使用逗号或空格来分隔短语$reg = "/[\s,]+/";//定义原字符串$msg = "hypertext language, programming";$keywords = preg_split($reg,$msg );print_r($keywords);
ログイン後にコピー
6。

えー



************************概要*********** **********
1. 正規表現は通常、習得するのが難しく、忘れやすいものです。この知識をすべての読者と共有できれば幸いです。

2. 一定の時間が来るたびにレビューします。




















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