検索
ホームページJava&#&チュートリアルJava 正規表現の貪欲モードおよび非貪欲モードのスキルをマスターする

Java 正規表現の貪欲モードおよび非貪欲モードのスキルをマスターする

Dec 26, 2023 pm 02:33 PM
java正規表現貪欲なパターン非貪欲モード

Java 正規表現の貪欲モードおよび非貪欲モードのスキルをマスターする

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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

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

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

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

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

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

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

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

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

mPDF

mPDF

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