簡體   English   中英

無法通過Java中的String.replaceAll替換轉義字符

[英]Unable to replace escape character through String.replaceAll in java

我正在嘗試使用String.replaceAll替換\\ ,並且這樣做時出現異常。 這是我的代碼:

    String str = "1^\\";
    System.out.println("\nInitial string length: "+str.length()+ " Initial String is:     "+str);
    String temp = str.replaceAll("[&@;^\\]","");

這是輸出:

Initial string length: 3 Initial String is: 1^\

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character     class near index 6
 [&@;^\]
  ^
at java.util.regex.Pattern.error(Pattern.java:1713)
at java.util.regex.Pattern.clazz(Pattern.java:2254)
at java.util.regex.Pattern.sequence(Pattern.java:1818)
at java.util.regex.Pattern.expr(Pattern.java:1752)
at java.util.regex.Pattern.compile(Pattern.java:1460)
at java.util.regex.Pattern.<init>(Pattern.java:1133)
at java.util.regex.Pattern.compile(Pattern.java:823)
at java.lang.String.replaceAll(String.java:2190)

\\\\轉義被字符串文字所吞噬,因此您要解析為正則表達式的字符串實際上是[&@;^\\]

正則表達式中的\\]轉義了] ,所以您有一個未封閉的字符類。

您需要兩次轉義\\ 一次用於字符串文字,一次用於正則表達式。

String和regex的轉義字符相同。 這意味着要

\\\\ - in the String
\\ - in the regex
\ - means

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM