簡體   English   中英

不要將String讀為Regex,請按原樣閱讀

[英]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.

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