プログラムによる正規表現検索の魔法を発見してください。コーディングの世界では、正規表現はテキスト内の特定の情報を見つけるのに役立つ秘密のコードのようなものです。この記事では、C# で正規表現を使用して検索し、さまざまなファイル形式のドキュメントをスマートに検索する方法を説明します。

正規表現によるドキュメント内の正規表現検索用の .NET API

Regex Search には、GroupDocs.Search for .NET API を利用します。これにより、正規表現パターンを指定するだけで、フォルダー全体のさまざまな形式のファイル内のテキストを検索できるようになります。このライブラリを使用すると、Word 文書、スプレッドシート、プレゼンテーション、PDF ファイル、マークアップ ファイル、電子書籍、電子メール メッセージ、One Note 文書、ZIP アーカイブなど、幅広いファイル形式のテキストをプログラムで検索できるようになります。

サポートされているファイル形式の詳細なリストについては、総合ドキュメントを参照してください。

ダウンロード セクション から DLL または MSI インストーラーを取得するか、NuGet を使用して API を .NET アプリケーションにインストールするかを選択できます。

C# を使用して正規表現でファイルを検索する方法

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

  • フォルダー パスを指定して インデックス を作成します。
  • 作成したインデックスに検索ディレクトリの親フォルダーのパスを追加します。
  • 正規表現検索クエリを定義します。
  • Search メソッドを使用して検索を実行し、検索結果を取得します。
  • これで、SearchResults を反復処理して、必要に応じて出力を作成できます。

以下のコードで使用されている正規表現は、次のような連続した繰り返し文字を持つすべての単語を識別します。追加、木材、参照。次の C# コードは、フォルダー間で異なるファイル形式の複数のファイルに対して正規表現によるクイック検索を実行します。

// C# を使用して複数のフォルダーにわたる複数のファイルを正規表現で検索する

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

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

ここでは、上記のコードの正規表現検索結果を強調表示しています。

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

検索結果を印刷する

次の C# コードは、検索結果を表示する 2 つの方法を提供します。

  1. 見つかったすべての単語を強調表示します。
  2. 読みやすく分析可能な形式で印刷する
// すべてのドキュメントの正規表現検索結果を強調表示して印刷する
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);

    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // 見つかった用語を印刷する
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}
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
...

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

無料ライセンス

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

無料トライアル

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

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

結論

この記事では、C# を使用して、複数のフォルダーにまたがる DOCX、PDF、TXT ファイルなどのさまざまなテキストベースのドキュメント内で特定のパターンを持つすべての単語を見つける正規表現検索の魔法について調べました。その後、検索結果を、検索した単語を強調表示し、読みやすい形式で印刷して表示しました。

API の包括的な詳細については、ドキュメント を参照することをお勧めします。

あらゆる質問や追加の議論は、利用可能なフォーラムに送信できます。

関連項目