Java |通过正则表达式传递插入符

Java | Pass caret through regex

我正在制作一个需要用“^”替换所有“^”的方法。但我使用的是 .replaceAll(),它接受一个正则表达式作为参数,插入符号 (^) 表示 而不是 正则表达式中除 之外的所有内容。它甚至没有转义字符。

那我该怎么做呢?

String a = "8^2";

public static String magicMethod(String a) {
    return a.replaceAll("^", " ^ "); // makes everything compile funny
}

你需要 unescape ^

return a.replaceAll("\^", " ^ "); // makes everything compile funny

regex中的^表示String

的开始

您可以使用反斜杠转义所有特殊的正则表达式字符 (\)。由于反斜杠也是一个 Java 字符串文字转义字符,因此在写为 Java 字符串时必须将其加倍。

a.replaceAll("\^", " ^ ")

如果您想使用 replaceAll() 并且搜索字符串 and/or 替换值为纯文本,您可以让字符串自动为您转义。

a.replaceAll(Pattern.quote("^"), Matcher.quoteReplacement(" ^ "))

一般只在搜索字符串and/or替换值是动态的时候使用。当不变时,就像你的情况一样,使用反斜杠转义。