文章目录
- [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):功能更强大,可以灵活应对复杂模式