1. はじめに
現在、正規表現は、*nix (Linux、Unix など)、HP などのオペレーティング システム、PHP、C#、Java などの開発環境、および多くのアプリケーション ソフトウェアを含む多くのソフトウェアで広く使用されています。
正規表現を使用すると、強力な機能を簡単な方法で実現できます。シンプルで効果的でありながら強力であるために、正規表現コードはより難しく、習得するのが簡単ではないため、使い始めた後は、特定のリファレンスを参照して使用するのが比較的簡単で効果的です。
例: ^.+@.+\..+$
この種のコードを見て私は何度も怖くなってしまいました。おそらく多くの人がそのようなコードを怖がってしまうでしょう。この記事を読み続けると、このようなコードを自由に適用できるようになります。
2. 正規表現の歴史
正規表現の「祖先」は、人間の神経系がどのように機能するかについての初期の研究にまで遡ることができます。 2 人の神経生理学者、ウォーレン・マカロックとウォルター・ピッツは、これらのニューラル ネットワークを記述する数学的方法を開発しました。
この研究は、Unix の主な発明者である Ken Thompson による計算検索アルゴリズムを使用した初期の研究に適用できることが後に判明しました。正規表現を最初に実際に応用したのは、Unix の qed エディターでした。
彼らが言うように、残りは私たち全員が知っている歴史です。それ以来、正規表現はテキストベースのエディターや検索ツールの重要な部分となってきました。
3. 正規表現の定義
正規表現 (正規表現) は、文字列に特定の部分文字列が含まれているかどうかを確認したり、一致する部分文字列を置き換えたり、特定の文字列から特定の条件を満たす部分文字列を抽出したりするために使用できる文字列の一致パターンを記述します。
3.1 通常のキャラクター
メタキャラクターとして明示的に指定されていないすべての印刷文字と非印刷文字で構成されます。これには、すべての大文字と小文字のアルファベット、すべての数字、すべての句読点、および一部の記号が含まれます。
キャラクターシンボル | 意味が含まれています |
x で指定された制御文字と一致します。たとえば、cM は Control-M または復帰文字と一致します。 x の値は、A ~ Z または a ~ z のいずれかでなければなりません。それ以外の場合、c はリテラルの「c」文字として扱われます。 | |
フォームフィードと一致します。 x0c および cL に相当します。 | |
改行文字と一致します。 x0a および cJ に相当します。 | |
復帰文字と一致します。 x0d および cM に相当します。 | |
スペース、タブ、フォームフィードなどを含む任意の空白文字と一致します。 【fnrtv】に相当。 | |
空白以外の文字と一致します。 [^ fnrtv] に相当します。 | |
タブ文字と一致します。 x09 および cI に相当します。 | |
垂直タブ文字と一致します。 x0b および cK に相当します。 |
キャラクター | は明 | と言った
$ | RegExp オブジェクトの Multiline プロパティが設定されている場合は、$ 文字自体と一致するように $ | を使用します。
() | 部分式の開始と終了をマークし、後で使用するために部分式を取得するには、( と ) を使用します。 |
前の部分式と 0 回以上一致します。* 文字と一致するには、* | を使用します。 |
前の部分式と 1 回以上一致します。 + 文字と一致するには、+ | を使用します。 |
改行文字 n を除く任意の 1 文字に一致します。 . に一致するには、. | を使用してください。 |
角括弧式の始まりを示します。 [と一致させるには、[ | ]を使用します |
先行する部分式と 0 回または 1 回一致するか、非貪欲修飾子を指定します。 ? 文字に一致するには、? | を使用します。 |
次の文字を特殊文字、リテラル文字、後方参照、または 8 進エスケープ文字としてマークします。 | |
角括弧式で使用されない限り、入力文字列の先頭と一致します。角括弧式で使用されている場合は、文字セットが受け入れられないことを示します。 ^ 文字そのものと一致させるには、^ | を使用します。 |
修飾子式の始まりをマークします。 { と一致させるには、{ | を使用します |
2 つの項目から選択を示します。 | と一致させるには、| | を使用します |
修飾子は、一致を満たすために正規表現の特定のコンポーネントが何回出現する必要があるかを指定するために使用されます。 * または + または ? または {n} または {n,} または {n,m} の 6 種類があります。 *、+、および ? 修飾子はすべて、それらの後に ? を追加することで可能な限り多くのリテラルと一致するという点で貪欲です。
正規表現の修飾子は次のとおりです:
特殊文字 | は言いました明 |
直前の部分式と 0 回以上一致します。たとえば、zo* は「z」と「zoo」に一致します。 * {0,} | に相当 |
前の部分式と 1 回以上一致します。たとえば、「zo+」は「zo」と「zoo」には一致しますが、「z」には一致しません。 + {1,} と同等 | |
前の部分式と 0 回または 1 回一致します。たとえば、「do(es)?」は「do」または「does」の「do」と一致します。 ? {0,1} | に相当 |
n は負ではない整数です。一致が n 回決定されました。たとえば、「o{2}」は「Bob」の「o」と一致することはできませんが、「food」の 2 つの o | には一致します。 |
n は負ではない整数です。少なくとも n 回一致します。 | |
m と n は両方とも非負の整数であり、n |
キャラクターシンボル | 説明説明 |
エスケープキャラクター | |
()、(?:)、(?=)、[] | 丸括弧と角括弧 |
*、+、?、{n}、{n,}、{n,m} | 予選 |
^、$、任意のメタ文字 | 位置と順序 |
| | 「OR」演算 |