文章目录
- [449. Java 正则表达式 - 其他实用方法](#449. Java 正则表达式 - 其他实用方法)
-
- [1️⃣ `Pattern.quote(String s)`](#1️⃣
Pattern.quote(String s)) - [2️⃣ `Pattern.toString()`](#2️⃣
Pattern.toString()) - [3️⃣ `String` 类中的正则方法](#3️⃣
String类中的正则方法) -
- [示例 1:`String.matches()`](#示例 1:
String.matches()) - [示例 2:`String.split()`](#示例 2:
String.split()) - [示例 3:`String.replace()`](#示例 3:
String.replace())
- [示例 1:`String.matches()`](#示例 1:
- [🔹 小结](#🔹 小结)
- [1️⃣ `Pattern.quote(String s)`](#1️⃣
449. Java 正则表达式 - 其他实用方法
除了 Pattern 和 Matcher 的常用方法,Java 提供了一些 辅助方法和 String 里的正则方法,可以让正则操作更方便。
1️⃣ Pattern.quote(String s)
java
public static String quote(String s)
- 功能:将输入字符串
s转换为 字面量匹配的正则表达式 - 特点:输入中的 元字符 (如
.,*,?等)会被当作普通字符处理,不再具有特殊含义
示例:
java
import java.util.regex.Pattern;
public class QuoteDemo {
public static void main(String[] args) {
String input = "a.b*c?";
String regex = Pattern.quote(input); // 将特殊字符转义
boolean match = Pattern.matches(regex, "a.b*c?");
System.out.println(match); // 输出 true
}
}
💡 说明:
- 如果直接用
"a.b*c?"作为正则,会匹配 任意一个字符 + b + 任意次数的 c + 可选 ? - 使用
Pattern.quote()后,匹配严格 完全等于字符串本身
2️⃣ Pattern.toString()
java
public String toString()
- 功能:返回 编译正则表达式的字符串形式
- 用途:方便调试,查看当前
Pattern对象对应的正则表达式
示例:
java
Pattern p = Pattern.compile("\\d{3}-\\d{2}-\\d{4}");
System.out.println(p.toString()); // 输出 \d{3}-\d{2}-\d{4}
3️⃣ String 类中的正则方法
Java 的 java.lang.String 也提供了几个 与 Pattern 等效的方法,让你直接对字符串操作正则:
| 方法 | 功能 | 等效 Pattern 方法 |
|---|---|---|
boolean matches(String regex) |
判断字符串是否 完全匹配 正则 | Pattern.matches(regex, str) |
String[] split(String regex) |
按正则分割字符串,去掉尾部空字符串 | Pattern.compile(regex).split(str) |
String[] split(String regex, int limit) |
按正则分割字符串,限制拆分次数 | Pattern.compile(regex).split(str, limit) |
String replace(CharSequence target, CharSequence replacement) |
替换 字面量 子串 | 不是正则,只替换字符串字面量 |
示例 1:String.matches()
java
String str = "12345";
boolean match = str.matches("\\d+"); // 判断是否全部是数字
System.out.println(match); // 输出 true
✅ 注意:matches() 要求 整个字符串匹配,不是部分匹配。
示例 2:String.split()
java
String str = "one:two:three";
String[] parts = str.split(":");
for (String s : parts) {
System.out.println(s);
}
输出:
java
one
two
three
示例 3:String.replace()
java
String str = "aaa";
String result = str.replace("aa", "b");
System.out.println(result); // 输出 ba
💡 说明:
- 替换 从左到右
- 字面量替换,不会把
"aa"重叠部分当成两次匹配
🔹 小结
Pattern.quote():把字符串转成 字面量正则Pattern.toString():查看当前正则表达式String类方法:方便快捷,适合简单匹配、拆分或替换
✅ 建议:
- 复杂正则 → 用
Pattern和Matcher - 简单匹配/拆分/替换 → 用
String自带方法