使用 Java 正则表达式提取所有括号中的字符串并返回 List

在编程中,正则表达式是一种强大的工具,可以帮助我们快速处理和解析字符串数据。如果你是刚入行的开发者,可能还不熟悉如何使用 Java 的正则表达式来提取字符串中的特定信息。今天,我将带你一起完成这个任务,提取所有括号中的字符串,并将其返回为一个 List

流程概述

为了帮助你更好地理解整个过程,以下是一个简明的步骤流程表:

步骤 说明
1 创建一个正则表达式匹配括号内的内容
2 使用 PatternMatcher 类来查找匹配项
3 将所有匹配项存入一个 List
4 输出 List 中的内容

甘特图

我们可以用甘特图来描述整个开发过程:

gantt
    title 正则提取括号内容的开发流程
    dateFormat  YYYY-MM-DD
    section 任务
    创建正则表达式     :done,  des1, 2023-10-01, 1d
    使用 Pattern 和 Matcher :done, des2, after des1, 1d
    存入 List         :done, des3, after des2, 1d
    输出 List          :done, des4, after des3, 1d

逐步实现代码

接下来,我们将一一实现上述流程中的每一个步骤。下面是实现的代码示例。

第一步:创建正则表达式

首先,我们需要一个用于匹配括号内内容的正则表达式。我们可以使用 \\((.*?)\\),其中 \\(\\) 分别表示匹配左括号和右括号,(.*?) 是一个捕获组,用于匹配括号内的任意内容。

String regex = "\\((.*?)\\";
// 上面的正则表达式中:
// \\( 表示左括号 (
// .*? 表示任意字符(尽可能少)
// \\) 表示右括号 )
第二步:使用 Pattern 和 Matcher 查找匹配项

Java 提供了 PatternMatcher 类来处理正则表达式。我们需要先创建一个 Pattern 对象,然后通过它创建一个 Matcher 对象来匹配字符串。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String input = "这是一个测试字符串 (第一个) 和 (第二个) 还有 (第三个)";
// 创建 Pattern 对象
Pattern pattern = Pattern.compile(regex);
// 创建 Matcher 对象
Matcher matcher = pattern.matcher(input);
第三步:将所有匹配项存入 List

我们需要一个 List 来存储所有匹配的结果。接下来,我们将使用一个 while 循环来查找所有匹配项,并将它们添加到 List 中。

import java.util.ArrayList;
import java.util.List;

List<String> matches = new ArrayList<>();

// 查找匹配项并存入 List
while (matcher.find()) {
    matches.add(matcher.group(1));
    // matcher.group(1) 用于获取第一个捕获组的内容
}
第四步:输出 List 中的内容

最后,我们将打印出 List 中的所有匹配项。在这里我们使用了简单的循环遍历和打印。

// 输出 List 中的所有内容
for (String match : matches) {
    System.out.println(match);
}

完整代码示例

将上面的步骤整合,完整代码如下所示:

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ExtractParenthesesContent {
    public static void main(String[] args) {
        String regex = "\\((.*?)\\";
        String input = "这是一个测试字符串 (第一个) 和 (第二个) 还有 (第三个)";
        
        // 创建 Pattern 对象
        Pattern pattern = Pattern.compile(regex);
        // 创建 Matcher 对象
        Matcher matcher = pattern.matcher(input);
        
        List<String> matches = new ArrayList<>();
        
        // 查找匹配项并存入 List
        while (matcher.find()) {
            matches.add(matcher.group(1));
        }
        
        // 输出 List 中的所有内容
        for (String match : matches) {
            System.out.println(match);
        }
    }
}

总结

通过以上的步骤和代码,我们成功地提取了字符串中所有括号内的内容并将其存入了一个 List 中。在实际开发中,正则表达式的应用场景非常广泛,掌握这一技术将为你后续的编程工作打下良好的基础。

希望这篇文章能够帮助到你,若有不清楚的地方,请随时向我提问!祝你在编程的道路上顺利前行!