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