[英]Don't read String as Regex, read AS IS
基本上我正在使用以下代碼
message.replaceFirst(cmd, "");
這很好,但是有時cmd的值為“ \\”,這會導致問題,因為它試圖將其讀取為正則表達式並給出以下錯誤
Caused by: java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
^
at java.util.regex.Pattern.error(Unknown Source) ~[?:1.7.0_45]
at java.util.regex.Pattern.compile(Unknown Source) ~[?:1.7.0_45]
at java.util.regex.Pattern.<init>(Unknown Source) ~[?:1.7.0_45]
at java.util.regex.Pattern.compile(Unknown Source) ~[?:1.7.0_45]
at java.lang.String.replaceFirst(Unknown Source) ~[?:1.7.0_45]
基本上,我想知道是否有一種方法可以使它按原樣閱讀,而不必嘗試將其用作正則表達式。
提前致謝
您必須使用Pattern#quote,因為\\
是RegEx中的特殊字符。
message.replaceFirst(Pattern.quote(cmd), "");
您也可能在替換String中遇到相同類型的問題,在這種情況下,請使用Matcher#quoteReplacement 。
按原樣使用:
String str = Pattern.compile(cmd, Pattern.LITERAL)
.matcher(message)
.replaceFirst("");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.