ホームページ  >  記事  >  バックエンド開発  >  正規表現チュートリアル - 単一文字のマッチングの詳細な説明

正規表現チュートリアル - 単一文字のマッチングの詳細な説明

高洛峰
高洛峰オリジナル
2017-01-09 16:17:241824ブラウズ

この記事の例では、単一の文字を照合する正規表現のチュートリアルについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです。

注: すべての例では、正規表現の一致結果がソース テキストの [and] の間に含まれています。一部の例は Java を使用して実装されます。 Java 自体の正規表現 式の使用法については該当箇所で説明します。すべての Java サンプルは JDK1.6.0_13 でテストされています。

java テストコード:

/**
 * 根据正则表达式和要匹配的源文本,输出匹配结果
 * @param regex 正则表达式
 * @param sourceText 要匹配的源文本
 */
public static void matchAndPrint(String regex, String sourceText){
  Pattern pattern = Pattern.compile(regex);
  Matcher matcher = pattern.matcher(sourceText);
  while(matcher.find()){
    System.out.println(matcher.group());
  }
}

1. プレーンテキストと一致する

1. 一致する結果は 1 つだけです

まず、単純な正規表現を見てみましょう。今日は、プレーンテキスト自体は正規表現です。 。例を見てみましょう:

ソーステキスト: 昨日は歴史、明日は謎、しかし今日は贈り物

正規表現: 今日

結果: 昨日は歴史、明日は謎ですが、【今日】はです。

分析: ここで使用されている正規表現はプレーン テキストであり、ソース テキストの今日の内容と一致します。

matchAndPrint メソッドを呼び出すと、出力結果は次のようになります:

today

2. 一致する結果が複数あります

ソース テキスト: Yesterday is History, Tomorrow is a Mystery, but today is a gift.

正規表現: is

結果: 昨日は歴史、明日は謎ですが、[今日] は贈り物です。

分析: ソース テキストには 3 つの is がありますが、履歴内の is も一致するため、4 つの is が出力されます。 。

matchAndPrint メソッドを呼び出すと、出力結果は次のようになります:

is

is

is

is

3. 大文字と小文字の問題

正規表現では大文字と小文字が区別されますが、多くの正規表現実装では大文字と小文字が区別されません。といった操作もサポートされています。 JavaScript では、i フラグを使用して、大文字と小文字を区別しない一致を実行します。 Java では、大文字と小文字を区別しないようにしたい場合は、正規表現をコンパイルするときに次のように指定できます:

Patternpattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

2. 任意の文字と一致します

前に見た正規表現は静的なプレーン テキストであり、何も反映しません。 at all 正規表現の力を示します。次に、正規表現を使用して予測できない文字と一致する方法を見てみましょう。

正規表現では、検索対象を指定するために特殊文字 (または文字の集合) が使用されます。 . 文字 (英語のステータスピリオド) は、任意の 1 文字と一致します。 DOS の ? 文字および SQL の _ (アンダースコア) 文字に相当します。例: 正規表現 c.t は、cat、cut、cot などに一致します。例を見てみましょう。

テキスト:

orders1.txt

orders2.txt

sales1.txt

salesA.txt

orders3.txt

sales2.txt

sales.txt

正規表現: 販売。

結果 : olders1.txt

orders2.txt

【sales1】.txt

【salesa式 sales は、文字列 sales と別の文字列で構成されるファイル名を検索します。文字、数字、およびそれ自体と一致します。 7 つのファイルのうち 4 つがこのパターンに一致します。

matchAndPrint メソッドが呼び出された場合、出力結果は次のようになります:

sales1

salesA

sales2

sales.

3. 特殊文字と一致する

文字は正規表現で特別な意味を持ちます。パターンに . が必要な場合は、正規表現における特別な意味ではなく、 . 文字自体が必要であることを正規表現に伝える方法を見つける必要があります。これを行うには、 . 文字を前に付けてエスケープする必要があります。これはメタキャラクター(文字自体の意味ではなく、この文字が特別な意味を持っていることを示すメタキャラクター)でもあります。次の例を考えてみましょう。

その後に続く数字に関係なく、na または sa で始まるファイルを検索します。

テキスト:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt.txt

正規表現: .a..txt

結果:

【セール】です。 txt

【na1】.txt

【na2】.txt

【sa1】.txt

【sanatxt】.txt

分析: この正規表現は na1.txt、na2.txt、sa1.txt を検索しますが、また予期せぬ結果が 2 つ見つかりました。正規表現 .a..txt 内の . 文字は任意の文字と一致するためです。 . 文字自体と一致させるには、エスケープを使用する必要があります。正規表現を .a..txt に変更すると、ニーズを満たすことができます。

注: Java を使用する場合、正規表現 .a..txt は Java 言語のエスケープ文字でもあるため、.a.\.txt として記述する必要があります。

4. 概要

正規表現は、実際にはいくつかの文字で構成される文字列です。これらの文字は、通常の文字 (プレーン テキスト) またはメタ文字 (特別な意味を持つ特殊文字) にすることができます。ここでは、ユニット文字に合わせて通常文字とメタ文字を使用する方法を紹介します。 . 任意の文字に一致します。文字をエスケープするために使用されます。正規表現では、特別な意味を持つ文字シーケンスは常に文字で始まります。次の記事では、文字のグループを一致させる方法を見ていきます。

単一文字のマッチングに関する正規表現チュートリアルの詳細な説明については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。