如何在 Java 中使用 GroupDocs.Search 进行正则搜索

在成千上万的文本文件中搜索可能像在大海捞针一样。如何进行正则搜索 在 Java 中变得轻而易举,只需将语言强大的正则表达式引擎与 GroupDocs.Search 结合使用,该库会构建索引以实现闪电般快速的模式匹配。接下来几分钟,你将看到如何安装库、创建索引、添加文件,以及运行简单的基于文本和面向对象的正则查询。结束时,你将能够在任何 Java 应用程序中嵌入强大的模式匹配搜索。

快速答案

  • 主要库是什么? GroupDocs.Search for Java
  • 如何开始? 添加 Maven 依赖并实例化 Index 对象
  • 我可以使用正则过滤内容吗? 是的 – 在内容过滤场景中使用正则查询
  • 我需要许可证吗? 生产使用需要免费试用或临时许可证
  • 支持哪个 JDK 版本? Java 8 或更高

什么是正则搜索?

正则搜索让你能够一次性在众多文件中定位日期、电子邮件地址或重复字符等模式。它将普通文本查询转化为强大的基于规则的扫描器,能够即时提取或屏蔽内容。

为什么在正则搜索中使用 GroupDocs.Search?

GroupDocs.Search 只需对文档建立一次索引,随后在每次查询时复用该索引,提供 最高 10 倍更快 的搜索速度,相比原始文件扫描更高效。该库支持 30 多种文件格式(PDF、DOCX、XLSX、PPTX、TXT、HTML 等),并且能够在不将整个文件加载到内存的情况下处理数百页的文件。

先决条件

  • Java 开发工具包 (JDK) 8 或更高
  • Maven 用于依赖管理
  • 基本了解 Java 正则表达式

所需库和依赖

将 GroupDocs.Search 添加到你的 Maven 项目中:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/search/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-search</artifactId>
      <version>25.4</version>
   </dependency>
</dependencies>

或者,从 GroupDocs.Search for Java releases 下载最新的 JAR 包。

许可证获取

从 GroupDocs.License 获取免费试用或临时许可证,并在应用启动时加载。

为 Java 设置 GroupDocs.Search

安装信息

  1. Maven 集成: 将上面显示的仓库和依赖添加到你的 pom.xml。
  2. 直接下载: 将 JAR 文件放置在项目的类路径中。
  3. 许可证应用: 在应用启动时加载许可证文件。
import com.groupdocs.search.*;

public class SearchSetup {
    public static void main(String[] args) {
        // Initialize the index by specifying a directory.
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\RegularExpressionSearch";
        Index index = new Index(indexFolder);

        System.out.println("Index created successfully at: " + indexFolder);
    }
}

核心组件

Index 类是核心组件,负责存储从文档中提取的可搜索标记。它能够在不重新读取原始文件的情况下快速查找任何词汇或模式。

如何创建索引

创建索引非常简单:实例化 Index 类并提供一个用于存放索引文件的文件夹路径。构造函数在首次使用时会创建必要的数据库文件,并为添加和搜索文档做好准备。创建后,可在所有查询中复用同一索引。

String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\RegularExpressionSearch";
Index index = new Index(indexFolder);

如何添加文档

要使文件可搜索,只需使用指向文件路径的 Document(或 DocumentInfo)实例调用 index.add。库会解析内容、提取标记并将其存入索引。此操作可对单个文件或批量文件执行,更新会以增量方式合并。

index.add("YOUR_DOCUMENT_DIRECTORY");
system.out.println("Documents added to the index.");

如何以文本形式执行正则表达式搜索

RegexQuery 定义了一种基于正则表达式的搜索查询。使用纯文本模式加载 RegexQuery,并将其传递给 Index 的 search 方法。引擎会在索引标记上评估该模式并返回匹配的文档引用,使一次性查找既快速又简便。

String query1 = "^((.)\\2{1,})";

如何以对象形式执行正则表达式搜索

RegexQuery 也可以构建为对象,并在多次搜索中复用。先定义一次查询,配置如不区分大小写或模糊匹配等选项,然后重复调用 index.search。当相同模式应用于多个文档集时,此方式可提升性能。

SearchResult result1 = index.search(query1);
system.out.println("Number of occurrences found: " + result1.getDocumentCount());

内容过滤正则使用案例

你可以使用正则自动屏蔽或标记符合特定模式的内容,例如:

  • 检测重复字符以进行垃圾邮件过滤
  • 查找类似信用卡的序列以进行数据隐私检查
  • 提取日期或 ID 以供下游处理

实际应用

  1. 文档管理系统: 通过模式(例如发票号码)定位合同、发票或政策。
  2. 内容审核: 在论坛或聊天应用中使用正则规则审核用户生成的文本。
  3. 数据提取: 从非结构化的 PDF 或 Word 文件中提取结构化数据,如订单号。

性能考虑因素

  • 索引更新: 每当源文件更改时调用 index.add 以保持结果最新。
  • 内存管理: 对于超过 100 万文档的语料库,启用增量索引以控制堆内存使用。
  • 正则设计: 保持模式简洁;例如 \d{4}-\d{2}-\d{2} 的运行速度是通配符密集表达式 .* 的 3 倍。

结论

你现在已经了解 如何进行正则搜索 在 Java 中使用 GroupDocs.Search,从安装库、创建索引到执行基于文本和面向对象的查询。这些技术让你能够在任何 Java 应用程序中添加快速、具备模式感知的搜索,无论是构建文档门户、合规扫描器还是数据挖掘流水线。

常见问题

Q: 在 GroupDocs.Search 中,基于文本的正则查询与基于对象的正则查询有什么区别?
A: 基于文本的查询是快速的一行代码,而基于对象的查询提供可复用、类型安全的定义,可存储并在多次搜索中重复使用。

Q: GroupDocs.Search 能否索引非文本文件,如 PDF 或 Excel 文件?
A: 能,库会从 PDF、DOCX、XLSX、PPTX 等超过 30 种格式中提取可搜索的文本。

Q: 添加新文件后,如何更新已有的搜索索引?
A: 使用新或已修改的文档调用 index.add;库会合并更改而无需重新构建整个索引。

Q: 使用正则与 GroupDocs.Search 时常见的陷阱有哪些?
A: 过于宽泛的模式(例如 .*)会导致性能下降,且错误的表达式可能得不到任何结果。请始终先在样本集上测试模式。

Q: 在哪里可以找到更高级的 GroupDocs.Search 教程?
A: 访问 GroupDocs Documentation 获取深入指南、API 参考和示例项目。


Last Updated: 2026-07-31
Tested With: GroupDocs.Search 25.4
Author: GroupDocs

SearchQuery query2 = SearchQuery.createRegexQuery("^(.)\\1{1,}");
SearchResult result2 = index.search(query2);
system.out.println("Occurrences found using object form: " + result2.getDocumentCount());

相关教程