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

时间:2016-01-20 01:44:41

标签: java regex replace caret

我制作的方法需要用&#34;替换所有&#34; ^&#34;&#34; ^&#34;。但我使用.replaceAll(),并将正则表达式作为参数,而插入符号(^)表示除了< / em>在正则表达式中。它甚至都没有逃脱角色。

那我该怎么办?

String a = "8^2";

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

这通常仅在搜索字符串和/或替换值是动态时使用。在常量时,如在您的情况下,使用反斜杠进行转义。

答案 1 :(得分:2)

您需要unescape ^

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

正则表达式中的^表示字符串

的开头