この記事の例では、正規表現チュートリアルでの部分式の使用法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
注: すべての例では、正規表現の一致結果がソース テキストの [and] の間に含まれています。一部の例は Java を使用して実装されます。 Java 自体の正規表現 式の使用法については該当箇所で説明します。すべての Java サンプルは JDK1.6.0_13 でテストされています。
1. 問題の紹介
まず、Windows 2000 などの一部の語句は複数の単語で構成されていますが、実際には HTML ページ内でそれらを表示するために使用できます。ブラウザ内の 1 行で、次のように複数のスペースに一致します。
テキスト: お使いのオペレーティング システムは Windows 2000 です。
正規表現: nbsp;{2,}
結果: お使いのオペレーティング システムは Windows 2000 です。
分析:ここで使用されるパターンは 2 つ以上の非改行スペースと一致することを望んでいますが、結果からわかるように、パターン nbsp;{2,} は nbsp;;;;;Text のようなもののみと一致するため、何も一致しません。 nbsp で始まり、2 つ以上の連続したセミコロンが含まれる。
なぜなら、前述の繰り返し一致は、繰り返し一致するメタ文字の直前の文字を複数回繰り返すことだからですが、文字列を複数回一致させたい場合はどうすればよいでしょうか?
2. 部分式
上記から部分式を導き出します。部分式は、より大きな式の一部です。式を複数の部分式に分割する目的は、それらの部分式を独立した要素として使用することです。部分式は (and) で囲む必要があります。したがって、前の例の正規表現は (nbsp;){2,} として記述する必要があります。
有効な年に一致する正規表現を見てみましょう:
テキスト: 1988-11-13
正規表現: (19|20)d{2}
結果: [1988]-11-13
分析: この例では、意味のない年を除外するために、年の最初の 2 桁は 19 または 20 に制限されています。 | は正規表現内の OR 演算子です。ここでは、部分式に 19|20、つまり (19|20) を入力する必要があります。そうでない場合は、20 で始まる年のみと一致します。
3 部分式のネストが許可され、複数のレベルのネスト 理論上、ネスト レベルに制限はありません。
式 ((A)(B(C))) には、次の部分式があります:
1 ((A)(B(C)))
2 (A)
3 (B (C))
4 (C)
全部で4つあり、常に0番目が式全体を表します。次の後方参照では、n (n は部分式の番号) を介して部分式を参照する方法を紹介します。
ネストされた部分表現の例については、後述の IPV4 アドレスに一致する正規表現を参照してください。
この記事が皆さんの正規表現の学習に役立つことを願っています。
その他の正規表現チュートリアルや部分表現の使用分析関連記事については、PHP 中国語 Web サイトに注目してください。