在 Java 里用正则处理“转义”,通常有两层意思,容易混在一起:
. * \ 等特殊字符)下面分情况说,并给例子。
在 Java 中,\ 本身是字符串转义符,所以:
String s = "\d"; // ❌ 编译错误
String s = "\\d"; // ✅ 表示正则里的 \d
| 想表达的正则 | Java 字符串写法 |
|---|---|
\d |
"\\d" |
\. |
"\\." |
\\ |
"\\\\" |
\n |
"\\n"(正则里的换行) |
// 匹配点号 .
String regex = "\\.";
"a.b".matches("a\\.b"); // true
\// 匹配一个反斜杠
String regex = "\\\\";
"a\\b".matches("a\\\\b"); // true
如果你要把用户输入当成普通文本去匹配(比如搜索关键词),必须转义:
Pattern.quoteString userInput = "a.b*";
String regex = Pattern.quote(userInput);
"a.b*".matches(regex); // true
✅ 最安全、推荐
public static String escapeRegex(String s) {
return s.replaceAll("([.\\\\*+?^${}()|\\[\\]])", "\\\\$1");
}
String result = "a.b.c".replaceAll("\\.", "/");
// result = "a/b/c"
如果替换内容里也有 \:
.replaceAll("\\.", "\\\\");
Java 里写正则:代码里多写一个
\,正则里才有一个\。
如果你有具体场景(比如解析 SQL、日志、路径、JSON),可以贴代码,我帮你改。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。