发现程序化正则表达式搜索的魔力!在编码世界中,正则表达式就像密码一样,可以帮助我们在文本中查找特定信息。本文将向您展示如何在C#中通过正则表达式搜索来智能地搜索各种文件格式的文档。

用于正则表达式的 .NET API 通过正则表达式在文档中搜索

对于正则表达式搜索,我们将利用 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# 代码提供了两种显示搜索结果的方法。

  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

结论

在本文中,我们研究了 RegEx 搜索的魔力,以使用 C# 跨多个文件夹查找各种基于文本的文档(例如 DOCX、PDF 和 TXT 文件)中具有特定模式的所有单词。之后,我们通过突出显示搜索的单词并以可读的格式打印它们来呈现搜索结果。

有关 API 的全面详细信息,建议读者参考文档

任何询问或其他讨论都可以直接访问可用的论坛

也可以看看