Latest web development tutorials

正規表現 - 例

単純な式

検索文字列に自身の通常の一文字にマッチする正規表現の最も単純な形式。 このような検索文字列には、常に文字Aと一致するかどうかをAとしては、例えば、単一文字モード、 以下は、単一の文字のいくつかの正規表現パターンの例です。

/a/
/7/
/M/

多くの大きな式の単一文字を形成するために一緒に組み合わせることができます。 、7とM.たとえば、次の正規表現は、単一の文字表現の組み合わせであります

/a7M/

ノー連結演算子ことに注意してください。 単に文字の後ろに別の文字を入力します。

文字の一致

ドット(。)は、印刷及び非印刷文字を1文字だけ例外の様々な文字列に一致します。 例外は、改行文字(\ n)です。 次の正規表現は、AAC、ABC、ACC、ADC、などと同様に、A1C、A2C、交流、および#cを一致します。

/a.c/

ファイル名を含む文字列、および期間を一致させるには、ピリオド(。)で正規表現に加え、バックスラッシュ(\)文字の前に、入力文字列の不可欠な部分です。 説明するために、次の正規表現は、ファイル名。拡張子一致します。

/filename\.ext/

これらの表現は、あなたが「任意の」は、単一の文字にマッチすることができます。 リストには、特定の文字セットと一致する必要があるかもしれません。 たとえば、数字(というように、第1章、第2章、および)との章見出しを検索することがあります。

括弧内の式

内の1つまたは複数の個々の文字を配置し、角括弧([と])で、一致する文字グループのリストを作成します。 文字が括弧で囲まれている場合、リストには、「ブラケット式」と呼ばれます 他の場所と同様に、通常の文字はつまり、入力テキストで、独自のいずれかと一致する、括弧内に自分自身を表します。 あなたがブラケット表現のほとんどの特殊文字で表示されたときにその意味を失います。 しかし、のようないくつかの例外があります:

  • ]の文字が初めてではない場合、それはリストの最後です。 リスト]の文字を一致させるには、最初の場所でそれを入れて、[バックの先頭に続きます。
  • \文字はエスケープ文字であり続けています。 \文字を一致させるには、\\を使用します。

その位置にある単一文字の正規表現で唯一の文字のブラケット表現の一致で囲まれました。 次の正規表現に一致する第1章、第2章、第3章、第4章と第5章:

/Chapter [12345]/

ワード章の後で括弧内の文字に対するスペースの位置が固定されていることに注意してください。 ブラケット表現は、単語だけの章と文字セットの後ろのスペースのすぐ後に単一の文字の位置を一致させる指定します。 これは、第九の文字位置です。

個別に開始文字と終了文字の範囲内でハイフン( - )を使用し、一致する文字セットを表すために、代わりに自分自身の文字の範囲を使用します。 文字値は、範囲内の個々の文字の相対的な順序を決定します。 次の正規表現は、範囲式が含まれ、式は括弧のリストに上記した範囲と同等です。

/Chapter [1-5]/

このように指定された範囲で使用される場合、両方の開始と終了の値は、範囲に含まれます。 それも重要であることに注意してください、Unicodeのソート順に従って、値が前の値の末尾に開始しなければなりません。

ブラケット表現のハイフンに含めるには、次の方法のいずれかを使用します。

  • バックスラッシュでエスケープ:
    [\-]
  • 括弧内のリストの先頭または末尾にハイフン。 次の式はすべて小文字とハイフンと一致しています:
    [-a-z]
    [a-z-]
    
  • 範囲を作成し、この範囲内で、開始値はハイフン文字未満であると終了文字に等しいか、ハイフン以上です。 次の2つの正規表現は、この要件を満たします:
    [!--]
    [!-~]
    

すべての文字の範囲内のリストかを確認するには、リストの先頭にキャレット(^)を設定します。 文字を挿入するには、リスト内の他の場所が表示された場合、それは自分自身にマッチします。 次の正規表現は、任意の文字、4または5桁の数字とそれ以降に一致します。

/Chapter [^12345]/

上記の例では、式は9位以外の任意の3、4または5つの数字と文字に一致します。 したがって、例えば、第7章では一致している、第9章では一致しています。

:を示すために、( - )上記の式は、ハイフンを使用することができます

/Chapter [^1-5]/

ブラケット式の一般的な使用は、任意の大文字または小文字またはマッチの任意の数を指定することです。 次の式は、このような一致を指定します。

/[A-Za-z0-9]/

置換およびグループ化

2以上の選択肢との間の通信が選択できるようにする文字|使用を交換してください。 例えば、章のタイトルは章タイトルマッチよりも広い範囲を返すために正規表現を拡張することができます。 しかし、これはあなたが考えるほど簡単ではありません。 いずれか一方の側の文字最大表情|マッチを交換してください。

あなたは、次の式が一致することは章や節の1または2桁の数字が続き、行の最初と最後に表示されると思うかもしれません。

/^Chapter|Section [1-9][0-9]{0,1}$/

残念ながら、上記の正規表現は、ラインに第1ワード章、またはワードのセクションとそれに続く数字とラインのマッチングいずれかの端に一致します。 入力文字列が第22章の場合は、上記の式は、単語だけの章に一致します。 入力文字列は、セクション22である場合、式は第22項に一致します。

正規表現は、制御が容易であるようにするには、それが唯一の二つの言葉の章や節に適用されることを保証するために、すなわち、置換の範囲を限定する括弧を使用することができます。 ただし、括弧は、サブ式を作成し、およびおそらく逆参照についてのセクションで説明されて後で使用するためにそれらを捕捉するために使用されます。 上記の正規表現は、括弧の場所を追加することで、第1章または第3節にマッチする正規表現を作ることができます。

次の正規表現は正しく表現を機能するために、グループの章や節に括弧を使用しています。

/^(Chapter|Section) [1-9][0-9]{0,1}$/

これらの式は機能しますが、章が|周りのセクションブラケットは、後の使用のために試合に二つの単語のいずれかをキャッチします。 唯一の捕獲されるように上記の式は、括弧のいずれか一方のみ設定されているので、「サブマッチを。」

上記の例では、あなただけの章と節の間の単語の組み合わせを選択するために括弧を使用する必要があります。 正規表現パターンは、括弧内に置かれる前に、マッチを防止するために、将来の使用のために保存されます?:。 以下の修正は、子供の試合を保存せずに、同じ機能を提供します:

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

エクソン文字:?また、他の2つは非キャプチャメタ文字は「先読み」試合と呼ばれるものを作成しています。 前方先読み使用?=指定され、それは括弧内に一致する検索文字列の開始点の正規表現パターンに一致します。 先読みの使用を逆?!指定し、それは検索文字列の開始文字列と一致しない正規表現パターンに一致します。

たとえば、あなたがWindowsの3.1、Windows 95、Windows 98およびWindows NTの参照へのリンクが含まれている文書があるとします。 ドキュメントでは、Windows 95、Windows 98およびWindows NTにWindows 2000に変更されたすべての参照を指しています更新する必要があると仮定する。 次の正規表現(これは前方予測の最初の例である)マッチのWindows 95、Windows 98およびWindows NT:

/Windows(?=95 |98 |NT )/

マッチを検索、試合直後(先読み文字を含まない)テキストで次の試合を検索します。 たとえば、Windows 98の一致した上記の式ならば、代わりにWindowsの後の98の後、検索を続けます。

その他の例

ここでは、正規表現の例をいくつか示します。

正则表达式 描述
/\b([a-z]+) \1\b/gi 一个单词连续出现的位置。
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径。
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置。
/[-a-z]/ a至z共26个字母再加一个-号。
/ter\b/ 可匹配chapter,而不能匹配terminal。
/\Bapt/ 可匹配chapter,而不能匹配aptitude。
/Windows(?=95 |98 |NT )/ 可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。
/^\s*$/ 匹配空行。
/\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记。