探索使用正则表达式在 Java 代码中进行搜索的魔力!在编码世界中,将正则表达式视为密码,可以帮助我们在文本中查找特定信息。本文将教您在 Java 中使用正则表达式进行搜索的基础知识,以便您可以跨文件夹智能地搜索不同文件格式的文档。

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

为了进行正则表达式搜索,我们将使用 GroupDocs.Search for Java API。使用此 API,我们可以跨文件夹搜索不同格式的文件中的特定文本,只需为其提供正则表达式模式即可。该工具使我们能够以编程方式搜索各种类型文件中的文本,例如 Word 文档、电子表格、演示文稿、PDF 文件、标记文件、电子书、电子邮件、One Note 文档和 ZIP 存档。

要获取支持的文件格式的详细列表,请查看详细文档

您有两种选择来获取 JAR 文件:从 下载部分 下载它,或将最新存储库和依赖项 Maven 配置 直接合并到您的 Java 应用程序中。

使用 Java 通过正则表达式搜索文件

以下是如何使用 Java 在文件夹内不同格式的多个文件中进行正则表达式搜索的简单步骤。然后,您可以轻松地为每个找到的文档创建突出显示的 HTML 输出文件。

  • 首先通过指定文件夹路径创建索引
  • 在刚刚创建的索引中添加要搜索的主文件夹的路径。
  • 设置正则表达式搜索查询。
  • 使用 search 方法运行搜索并获取结果。
  • 现在,您可以浏览 SearchResults 并根据您的喜好生成所需的输出。

下面代码中的正则表达式检测具有连续重复字符的单词,例如gree、call等。该 Java 代码使用正则表达式在不同文件夹内不同格式的各种文件中进行快速搜索。

// 正则表达式 使用 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 代码提供了两种显示搜索结果的方法:

  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 参考

任何问题或进一步讨论可以在论坛中解决。

也可以看看