この記事の例では、正規表現チュートリアルの位置一致について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
注: すべての例では、正規表現の一致結果がソース テキストの [and] の間に含まれています。一部の例は Java を使用して実装されます。 Java 自体の正規表現 式の使用法については該当箇所で説明します。すべての Java サンプルは JDK1.6.0_13 でテストされています。
1. 問題の概要
テキスト内の特定の単語を一致させたい場合は、次のようになります (後で紹介する複数行モードは考慮していません)。テキスト: 昨日は歴史、明日は謎、しかし今日は贈り物です。
正規表現: is
結果: 昨日は [は] 歴史、明日は [は] ミステリー、しかし今日は [は] a Gift.
分析: 元々は、単語 is に一致するだけでしたが、他の単語にも含まれています。この問題を解決するには、境界区切り文字を使用します。境界区切り文字は、一致操作を実行する場所 (または境界) を示すために正規表現で使用されるメタ文字です。
2. 単語境界
一般的に使用される境界は、修飾子 b によって指定される単語境界であり、単語の先頭と末尾を一致させるために使用されます。より正確には、単語の形成に使用できる文字 (文字、数字、アンダースコア、w に一致する文字) と単語の形成に使用できない文字 (W は文字に一致) の間の位置と一致します。 。前の例を見てみましょう:
テキスト: 昨日は歴史、明日は謎、しかし今日は贈り物です。
正規表現: bisb
結果: 昨日は歴史、明日は謎、しかしtoday 【is】 a gift.
分析: 原文では、単語 is の前後にスペースがあり、これはパターン bisb と一致します (スペースは単語を区切る文字の 1 つです)。 History という単語には、その前後に h と t という 2 つの文字があるため、is も含まれます。これら 2 つの文字はいずれも b と一致しません。
単語の境界が一致しない場合は、B が使用されます。例:
テキスト: 色分けされたパスキーに表示されている 9 桁の ID を入力してください。
正規表現: B-B
結果: パスキーに表示されている [9 桁の] ID を入力してください。色分けされた [パスキー]
分析: B-B は前後の単語の境界ではないハイフンと一致します。9 桁のハイフンとパスキーの前後にはスペースがありません。色分けされている間は一致しました ハイフンの前後にスペースがあるため、一致することはできません。
3. 文字列境界
単語境界は、単語に関連する位置 (単語の先頭、単語の末尾、単語全体など) を一致させるために使用できます。文字列境界にも同様の目的がありますが、文字列に関連する位置 (文字列の先頭、文字列の末尾、文字列全体など) を一致させるために使用されます。文字列の境界を定義するために使用されるメタ文字は 2 つあります。1 つは文字列の先頭を定義するために使用される ^ で、もう 1 つは文字列の終わりを定義するために使用される $ です。
たとえば、XML ドキュメントの合法性をチェックしたい場合、合法な XML ドキュメントはすべて で始まります
結果:
分析: ^ は文字列の先頭に一致するため、^s* は タグはスペース、タブ、改行などの空白文字を先頭に使用できるため、文字列の先頭とそれに続く 0 個以上の空白文字と一致します。
$ メタキャラクターの使用法は、位置の違いを除いて ^ の使用法とまったく同じです。たとえば、HTML ページが