正規表現に関する簡単な説明、正規表現_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:21:34
オリジナル
808 人が閲覧しました

正規表現についての簡単な話、正規表現

1. 正規表現とは何ですか?

簡単に言うと、正規表現(正規表現)は文字列のマッチングを処理するための言語です。

正規表現は文字列一致パターンを記述します。これを使用して、文字列に特定の部分文字列が含まれているかどうかを確認し、一致した部分文字列に対して「削除」または「置換」操作を実行できます。

2. 正規表現の適用

正規表現は実際の開発プロセスにおいて非常に実用的であり、いくつかの複雑な文字列処理の問題を迅速に解決できます。以下に正規表現のアプリケーションをいくつか簡単に分類します。

最初のタイプ: データ検証

たとえば、文字列が正しいメール、電話、IP などであるかどうかを確認したい場合、正規表現を使用すると非常に便利です。

2 番目のタイプ: コンテンツ検索

たとえば、Web ページから画像を取得する場合は、正規表現を使用して正確に一致させることができます。

3 番目のタイプ: コンテンツの置換

たとえば、携帯電話番号の真ん中の 4 桁を非表示にして、このパターン (123****4567) に変更したい場合は、正規表現を使用すると非常に便利です。

3. 正規表現の内容とは

以下に正規表現について簡単に紹介します。

1. 正規表現のいくつかの重要な概念

部分表現: 正規表現において、「()」で囲まれた内容が使用される場合、それを「部分表現」と呼びます
  • キャプチャ: 部分式と一致した結果は、システムによってバッファーに配置されます。このプロセスは「キャプチャ」と呼ばれます
  • 後方参照: 「n」を使用します。n は数字であり、参照の前の特定のバッファー間の内容を示します。これを「後方参照」と呼びます
  • 2. 数量修飾子

X+ 意味: 1 つ以上
  • X* は 0 以上を表します
  • ×? 表す: 0 または 1
  • X{n} の意味: n
  • X{n,} は次を表します: 少なくとも n
  • X{n,m} は次のことを意味します: n から m まで、貪欲な原則は、最後に 1 を追加すると可能な限り多く一致しますか? 、それなら不欲主義です
注: X は検索する文字を表します

3. キャラクター修飾子

d の意味: 数字 [0-9] と一致します
  • D は次を表します: 数字以外の文字 [^0-9] と一致します
  • w の意味: アンダースコア [0-9a-zA-Z_] を含む単語文字に一致します
  • W の意味: 単語以外の文字 [^0-9a-zA-Z_] に一致します
  • s の意味: 任意の空白文字、スペース、復帰文字、タブ文字と一致する
  • S の意味: 空白以外の文字と一致する
  • を表します: 任意の 1 文字と一致します
  • その他、以下の種類があります:

範囲文字: [a-z]、[A-Z]、[0-9]、[0-9a-z]、[0-9a-zA-Z]

任意の文字: [abcd]、[1234]

含まれない文字: [^a-z]、[^0-9]、[^abcd]

4. ロケーター

^ 意味: 始まりのロゴ
  • $ 意味: 終了マーク
  • b は単語の境界を表します
  • B は非単語境界を表します
  • 5. エスケープ文字

特定の特殊文字と一致するために使用されます
  • 6. 一致するキャラクターを選択します

| 複数のルールに一致する可能性があります
  • 7.特別な使い方

(?=): 前方参照: 指定された内容で終わる文字列と一致します
  • (?!): 否定検索: 指定された内容で終わらない文字列と一致します
  • (?:): 選択された一致のコンテンツをバッファーに入れません
  • 4. Javascriptでの正規表現の使い方

JavaScript で正規表現を使用するには 2 つの方法があります:

最初の方法: RegExp クラスを使用する

提供されるメソッドは次のとおりです:

test(str): 文字列マッチングでパターンに一致する文字列があるかどうかを確認し、true/falseを返します
  • exec(str): 一致するパターンに一致する文字列を返します。存在しない場合は、null を返します。
  • //正規表現に部分式がある場合、execメソッド使用時

///返されるものは次のとおりです: result[0] = 一致する結果、result[1] = 部分式 1 の一致する結果...

2 番目の方法: String クラスを使用します

提供されるメソッドは次のとおりです:

検索: パターンに一致する文字列が出現する位置を返します。出現しない場合は、-1を返します

    match: 一致するパターンに一致する文字列を返します。存在しない場合は、null を返します。
  • replace: 一致するパターンに一致する文字列を置換します
  • 分割: 区切り文字として一致するパターンを持つ文字列を分割し、配列を返します
  • 5. PHP での正規表現の使い方
  • PHP では正規表現を使用する関数が 2 つあります:

最初の関数は: Perl 正規表現関数です

提供されるメソッドは次のとおりです:

  • preg_grep -- パターンに一致する配列セルを返します
  • preg_match_all -- グローバル正規表現マッチングを実行します
  • preg_match -- 正規表現のマッチング
  • preg_quote -- 正規表現文字をエスケープする
  • preg_replace_callback -- コールバック関数を使用して正規表現の検索と置換を実行します
  • preg_replace -- 正規表現の検索と置換を実行します
  • preg_split -- 正規表現を使用して文字列を分割します

2 つ目は: POSIX 正規表現関数です

提供されるメソッドは次のとおりです:

  • ereg_replace -- 正規表現を置換します
  • ereg -- 正規表現マッチング
  • eregi_replace -- 大文字と小文字を区別しない置換正規表現
  • eregi -- 大文字と小文字を区別しない正規表現のマッチング
  • split -- 正規表現を使用して文字列を配列に分割します
  • spliti -- 正規表現を使用して、大文字と小文字を区別せずに文字列を配列に分割します
  • sql_regcase -- サイズに依存しない一致のための正規表現を生成します

6.まとめ

正規表現は特定の機能を実装するためのツールです:

1.強力な機能

正規表現内のさまざまな修飾子のさまざまな組み合わせにより、さまざまな機能が実現されます。複雑な関数を実装するには、それを正確に一致させる方法が必要になることがあります。

2. シンプルで便利

通常、文字列コンテンツを検索するときは、特定の文字列のみを検索できますが、正規表現を使用すると、あいまい検索を実行できます。これにより、より高速で便利になり、正規表現文字列のみが必要になります。

3. 基本的にすべての言語がサポートされています

現在、JAVA、PHP、JavaScript、C#、C++などの主流言語はすべて正規表現をサポートしています。

4. 学ぶのは簡単、応用は奥深い

正規表現を学ぶのは早くて簡単ですが、実際の開発において効率的で正確な正規表現を記述するには、依然として長い期間の試行と蓄積が必要です。

正規表現

正規表現は、簡単な方法で強力な機能を実現するために携帯電話番号やメールアドレスなどを決定するために js でよく使用されます

記号の説明

文字の説明
\ 次の文字を特殊文字またはリテラル文字としてマークします、後方参照、または 8 進エスケープ文字。たとえば、「n」は文字「n」と一致します。 「\n」は改行文字に一致します。シーケンス '\\' は "\" に一致し、"\(" は "(" に一致します。
^ は入力文字列の先頭に一致します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、^ は '\n' または ' にも一致します。 \r ' の後。
$ は入力文字列の末尾に一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は前の部分式と 0 回一致します。たとえば、zo* は「z」および「zoo」に一致します。たとえば、「zo+」は前の部分式に 1 回以上一致します。 + {1,} と同等。たとえば、「do(es)?」は「do」または「. Does」と一致します。 do".? {0,1} と同等です。
{n} n は負ではない整数です。特定の n 回一致します。たとえば、「o{2}」は「Bob」「o」と一致できませんが、一致することはできます。 「food」の 2 つの o に一致します。
{n,} n は負ではない整数です。たとえば、「o{2,}」は「Bob」の ' に一致しますが、「foooood」のすべての o に一致します。 'o{1,}' は 'o+' と等価です。 'o{0,}' は 'o*' と等価です。ここで、n ? の間に他のリミッター (*、+、?、{n) が続く場合、マッチング モードは非貪欲です。非貪欲モードでは、検索された文字列ができるだけ少なく一致しますが、デフォルトの貪欲モードでは、文字列「oooo」の場合、単一の「o」が一致します。 'o+' は「\n」を除く任意の 1 文字と一致します。「\n」を含む任意の文字と一致するには、「[.\n]」のようなパターンを使用します。たとえば、次のようになります。 z...全文>>




正規表現とは何ですか?例を教えてください

現在、正規表現は、*nix (Linux、Unix など)、HP およびその他のオペレーティング システム、PHP、C#、Java およびその他の開発環境、および多くのアプリケーション ソフトウェアを含む多くのソフトウェアで広く使用されています。正規表現のシャドウを参照してください。

正規表現を使用すると、強力な機能を簡単な方法で実現できます。シンプルで効果的でありながら強力であるために、正規表現コードはより難しく、習得するのが簡単ではないため、使い始めた後は、特定のリファレンスを参照して使用するのが比較的簡単で効果的です。

例: ^.+@.+\\..+$

2. 正規表現の歴史

正規表現の「祖先」は、人間の神経系の仕組みに関する初期の研究に遡ることができます。 2 人の神経生理学者、ウォーレン・マカロックとウォルター・ピッツは、これらのニューラル ネットワークを記述する数学的方法を開発しました。
1956 年、Stephen Kleene という数学者は、McCulloch と Pitts の初期の研究に基づいて、正規表現の概念を導入した「ニューラル ネットワーク イベントの表現」というタイトルの論文を発表しました。正規表現は、彼が「正規集合の代数」と呼ぶ式を記述するために使用されるため、「正規表現」という用語が付けられています。

その後、この研究は、Unix の主な発明者である Ken Thompson による計算検索アルゴリズムを使用した初期の研究に適用できることが判明しました。正規表現を最初に実際に応用したのは、Unix の qed エディターでした。

彼らが言うように、残りは既知の歴史です。その時から現在に至るまで、正規表現はテキストベースのエディターや検索ツールの重要な部分であり続けています
3. 正規表現の定義
正規表現は、文字列に特定の部分文字列が含まれているかどうかを確認するために使用されます。一致する部分文字列を置き換えたり、文字列から特定の条件を満たす部分文字列を抽出したりする。

ディレクトリをリストする場合、dir *.txt または ls *.txt 内の *.txt は正規表現ではありません。これは、ここでの * の意味が正規表現の * とは異なるためです。
正規表現は、通常の文字 (a から z までの文字など) とメタキャラクターと呼ばれる特殊文字で構成されるリテラル パターンです。正規表現は、文字パターンと検索文字列を照合するテンプレートとして機能します。

3.1 通常の文字
は、メタキャラクターとして明示的に指定されていないすべての印刷文字と非印刷文字で構成されます。これには、すべての大文字と小文字のアルファベット、すべての数字、すべての句読点、および一部の記号が含まれます。

3.2 非印刷文字 文字 意味
\cx x で指定された制御文字と一致します。たとえば、\cM は Control-M または復帰文字と一致します。 x の値は、A ~ Z または a ~ z のいずれかでなければなりません。それ以外の場合、c はリテラルの「c」文字として扱われます。
\f はフォーム フィード文字と一致します。 \x0c および \cL に相当します。
\n は改行文字と一致します。 \x0a および \cJ に相当します。
\r は復帰文字と一致します。 \x0d および \cM に相当します。
\s は、スペース、タブ、フォーム フィードなどを含む任意の空白文字と一致します。 [ \f\n\r\t\v] と同等。
\S は空白以外の文字に一致します。 [^ \f\n\r\t\v] と同等。
\t はタブ文字と一致します。 \x09 および \cI に相当します。
\v は垂直タブ文字と一致します。 \x0b および \cK に相当します。

3.3 特殊文字

いわゆる特殊文字は、上記の「*.txt」の * のように、特別な意味を持つ文字であり、単純... 全文の続き >>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/856578.html技術記事正規表現についての簡単な説明、正規表現 1. 正規表現とは何ですか? 簡単に言うと、正規表現 (正規表現) は、文字列のマッチングを処理するための言語です...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート