Java 正規表現構文のヒント: グリーディ モードと非グリーディ モード
Java 正規表現を使用する場合、多くの場合、できるだけ多くの文字に一致するか、またはできるだけ少ない文字数で。これには、グリーディ モードと非グリーディ モードを使用してマッチング方法を制御する必要があります。この記事では、これら 2 つのモードを詳しく紹介し、具体的なコード例を示します。
1. Greedy モード
Greedy モードはデフォルトのマッチング方法です。貪欲モードでは、正規表現は、一致条件が満たされなくなるまで、できるだけ多くの文字と一致します。
たとえば、次のテキストがあります:
String text = "abc abc abc";
中央の「abc」と一致させたいとします。次のコードを使用できます。
Pattern pattern = Pattern.compile(".*");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
「.*」は貪欲モードを使用し、可能な限り多くの文字に一致するため、出力結果は「abc abc abc」になります。
2. 非貪欲モード
非貪欲モードは、貪欲モード修飾子の後に「?」を追加することで実現されます。非貪欲モードでは、正規表現は、一致条件が満たされるまで、できるだけ少ない文字と一致します。
以下は、非貪欲モードを使用したコード例です:
Pattern pattern = Pattern.compile(".*?");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
出力結果は「abc」です。これは、「.*?」が非貪欲モードを使用し、条件を満たす最小値。
3. グリーディ モードと非グリーディ モードのアプリケーション シナリオ
1. グリーディ モードのアプリケーション シナリオ
グリーディ モードは、通常、できるだけ多くの文字を一致させる必要がある状況に適しています。たとえば、HTML ドキュメント内のすべてのタグを一致させたい場合、デフォルトの貪欲モードではすべてのタグを一度に一致させることができます。
String html = "
見出し 1
段落 1
見出し 2
段落 2
";パターン pattern = Pattern.compile("<.>");
Matcher matcher = pattern.matcher(html);
while (matcher.find()) {
System.out.println(matcher.group());
}
出力結果は、「
」、「
」、「」、「
」、「」です。 ;"、"
"、""、"
"。2. 非貪欲モードのアプリケーション シナリオ
非貪欲モードは、通常、できるだけ少ない文字を一致させる必要がある状況に適しています。たとえば、文内のすべての単語を一致させたい場合、デフォルトの非貪欲モードでは単語を 1 つずつ一致させることができます。
文字列文 = "コーディングが大好きです";
パターン パターン = Pattern.compile("\b\w ?\b");
Matcher matcher = pattern.matcher(sentence);
while (matcher.find()) {
System.out.println(matcher.group());
}
出力結果は「I」、「love」、「coding」です。
要約すると、グリーディ モードと非グリーディ モードは Java 正規表現で非常に便利です。特定のニーズに応じて、適切なモードを選択すると、より適切に照合を実現し、必要な情報を抽出できます。この記事のコード例が、読者が貪欲モードと非貪欲モードをよりよく理解し、適用するのに役立つことを願っています。
以上がJava 正規表現の貪欲モードおよび非貪欲モードのスキルをマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
