448. Java 正则表达式 - Pattern.split() 方法

文章目录

  • [448. Java 正则表达式 - `Pattern.split()` 方法](#448. Java 正则表达式 - Pattern.split() 方法)
    • [📌 基本用法](#📌 基本用法)
      • [示例 1:按冒号拆分字符串](#示例 1:按冒号拆分字符串)
      • [示例 2:按数字拆分字符串(正则应用)](#示例 2:按数字拆分字符串(正则应用))
      • [🔹 进阶用法:限制拆分次数](#🔹 进阶用法:限制拆分次数)
      • [🔹 总结](#🔹 总结)

448. Java 正则表达式 - Pattern.split() 方法

在前面的培训中,我们学习了如何 查找匹配的文本 。有时候,我们更希望 根据匹配结果把字符串拆分成若干部分 ,这时就可以使用 split() 方法


📌 基本用法

语法:

java 复制代码
String[] parts = Pattern.compile(regex).split(input);
  • regex:匹配分隔符的正则表达式
  • input:要拆分的字符串
  • 返回值:一个字符串数组,包含 匹配的分隔符两侧的所有文本

示例 1:按冒号拆分字符串

java 复制代码
import java.util.regex.Pattern;

public class SplitDemo {
    private static final String REGEX = ":";  // 拆分符
    private static final String INPUT = "one:two:three:four:five";
    
    public static void main(String[] args) {
        Pattern p = Pattern.compile(REGEX);
        String[] items = p.split(INPUT);
        for (String s : items) {
            System.out.println(s);
        }
    }
}

✅ 输出:

java 复制代码
one
two
three
four
five

💡 说明:

  • 我们使用了最简单的 字符分隔符 :
  • split() 会返回一个数组,数组元素是 分隔符两边的内容

示例 2:按数字拆分字符串(正则应用)

java 复制代码
import java.util.regex.Pattern;

public class SplitDemo2 {
    private static final String REGEX = "\\d";  // 拆分符:任意数字
    private static final String INPUT = "one9two4three7four1five";

    public static void main(String[] args) {
        Pattern p = Pattern.compile(REGEX);
        String[] items = p.split(INPUT);
        for (String s : items) {
            System.out.println(s);
        }
    }
}

✅ 输出:

java 复制代码
one
two
three
four
five

💡 说明:

  • \\d 表示 任意数字
  • 不管数字是多少,都会作为拆分点
  • 这种方式比 String.split(String) 更强大,因为它可以用 任意正则表达式 作为分隔符

🔹 进阶用法:限制拆分次数

split() 方法还有一个重载版本:

java 复制代码
String[] parts = Pattern.compile(regex).split(input, limit);
  • limit > 0:最多拆分 limit - 1 次,剩余部分作为最后一个元素
  • limit == 0:拆分所有匹配项,并去掉尾部空字符串
  • limit < 0:拆分所有匹配项,保留尾部空字符串
示例:
java 复制代码
String input = "one:two:three:four:five";
String[] result = Pattern.compile(":").split(input, 3);
for (String s : result) {
    System.out.println(s);
}

✅ 输出:

java 复制代码
one
two
three:four:five

👉 只拆分前两次,剩余内容保持完整。


🔹 总结

  • Pattern.split() 可以按 任意正则表达式 拆分字符串
  • 返回值是 字符串数组
  • 可通过重载版本设置拆分次数
  • 对比 String.split(String):功能更强大,可以灵活应对复杂模式