Java コード内での検索に正規表現を使用する魔法を体験してください。コーディングの世界では、正規表現はテキスト内の特定の情報を見つけるのに役立つ秘密のコードのようなものだと考えてください。この記事では、Java での正規表現を使用した検索の基本を説明します。これにより、フォルダ間でさまざまなファイル形式のドキュメントをスマートに検索できます。

正規表現によるドキュメント内の正規表現検索のための Java API

Regex Search を実行するには、GroupDocs.Search for Java API を使用します。この API を使用すると、正規表現パターンを指定するだけで、フォルダー間でさまざまな形式のファイル内の特定のテキストを検索できます。このツールを使用すると、Word 文書、スプレッドシート、プレゼンテーション、PDF ファイル、マークアップ ファイル、電子書籍、電子メール メッセージ、One Note 文書、ZIP アーカイブなど、さまざまな種類のファイル内のテキストをすべてプログラム的な方法で検索できます。

サポートされているファイル形式の詳細なリストを取得するには、詳細ドキュメントを確認してください。

JAR ファイルを取得するには 2 つのオプションがあります。ダウンロード セクション からダウンロードするか、最新のリポジトリと依存関係の Maven 構成 を Java アプリケーションに直接組み込むことです。

Javaを使用した正規表現によるファイルの検索

Java を使用してフォルダー内の異なる形式の複数のファイルで正規表現検索を実行する簡単な手順を次に示します。その後、見つかったドキュメントごとに強調表示された HTML 出力ファイルを簡単に作成できます。

  • まずはフォルダーパスを指定してインデックスを作成します。
  • 作成したインデックスに検索するメイン フォルダーのパスを追加します。
  • 正規表現検索クエリを設定します。
  • search メソッドを使用して検索を実行し、結果を取得します。
  • ここで、SearchResults を実行し、好みに応じて目的の出力を生成できます。

以下のコードの正規表現は、agree、call、soon など、連続して繰り返される文字を含む単語を検出します。この Java コードは、さまざまなフォルダー内のさまざまな形式のさまざまなファイルに対して正規表現を使用した高速検索を実行します。

// Regex Java を使用してフォルダー間で複数のファイルを検索する

// インデックスフォルダーを作成し、そこにドキュメントのフォルダーを追加する
Index index = new Index("path/indexing-folder-path");
index.add("path/parent-folder");

// 正規表現クエリと検索を準備する
// ここでの正規表現とは、連続して繰り返される文字を含むすべての単語を識別することです。
String query = "^(.)\\1{1,}"; 
SearchResult result = index.search(query);

以下では、提供されたコード内の正規表現検索の結果を強調表示しています。

HTML 形式での正規表現検索の強調表示された結果

検索結果を印刷する

次の Java コードは、検索結果を表示する 2 つのメソッドを提供します。

  1. 発見されたすべての単語を強調表示します。
  2. 読みやすく分析しやすい形式で結果を印刷します。
// すべてのドキュメントの正規表現検索結果を強調表示して印刷する
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
  
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "path/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
 
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\t\tField: " + field.getFieldName());
        System.out.println("\t\tOccurrences: " + field.getOccurrenceCount());

        // 見つかった用語を印刷する
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
    }
}
Document: English.txt
Occurrences: 83
	Field: content
	Occurrences: 82
		acceptance          1
		added               1
		agreeable           1
		agreed              1
		all                 4
		appearance          1
		assurance           1
...
===========================================
Document: Lorem ipsum.docx
	Occurrences: 945
...
Field: content
	Occurrences: 939
		accumsan            39
		class               7
		commodo             40
		convallis           38
		dignissim           35
		efficitur           46
		fringilla           40
		habitasse           2
		laoreet             27
		massa               63
		mattis              31
...

無料ライセンスまたは無料トライアルを取得する

無料ライセンス

一時ライセンスを無料で取得すると、このライブラリを制限なく探索できます。

無料トライアル

ダウンロードセクションから無料トライアルをダウンロードできます。

ファイルとフォルダー内を検索するための Java API

結論

この記事では、Java を使用して複数のフォルダーにまたがる DOCX、PDF、TXT ファイルなどのさまざまなテキストベースのドキュメントから特定のパターンを持つ単語を見つける正規表現検索の驚異の基本について説明しました。その後、特定された単語を強調表示し、わかりやすい形式で印刷することで、検索結果を紹介しました。

API を完全に理解するには、ドキュメントAPI リファレンス を参照することをお勧めします。

質問やさらなる議論はフォーラムで解決できます。

関連項目