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替换值是动态的时候使用。当不变时,就像你的情况一样,使用反斜杠转义。
我正在制作一个需要用“^”替换所有“^”的方法。但我使用的是 .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替换值是动态的时候使用。当不变时,就像你的情况一样,使用反斜杠转义。