我必須用中的'\'
替換所有出現的'\''\'
。我知道正則表達式"\\\\"
意味着\
,但我如何編寫replaceAll()
的正則表達式來匹配'\''\'
。我試過:正則表達式匹配連續出現的兩個反斜槓?
.replaceAll("\\\\\\\\", "\\")
但我得到一個java.util.regex.PatternSyntaxException?
我必須用中的'\'
替換所有出現的'\''\'
。我知道正則表達式"\\\\"
意味着\
,但我如何編寫replaceAll()
的正則表達式來匹配'\''\'
。我試過:正則表達式匹配連續出現的兩個反斜槓?
.replaceAll("\\\\\\\\", "\\")
但我得到一個java.util.regex.PatternSyntaxException?
如果您要更換的,而不是replaceAll
使用replace
方法不使用正則表達式的語法文字:
replace("\\\\", "\\")
如果你絕對必須使用replaceAll
記得它的第二個參數也有一些特殊的字符,這是
$
(其中$x
表示選自組x
匹配)\
能擺脫$
和本身所以使用replaceAll
需要看起來像代碼:
replaceAll("\\\\\\\\", "\\\\")
,因爲我們還需要在正則表達式引擎\\
逃脫\
兩次(一次,一次字符串\\\\
)。
我試過了,得到:java.util.regex.PatternSyntaxException:在索引1附近有非法重複問題 –
@someone_somewhere是否從'replaceAll'中刪除了'All'後綴? – Pshemo
對不起,我有: \t \t validElement = validElement.replaceAll(「\\\\ {」,「{」).replace(「\\\\」,「\\」);因此它在第一部分打破了。 .replace(「\\\\」,「\\」)工作:) 謝謝。 –
您可以使用'「\\ {2}」'或''\\\\'''正則表達式模式。甚至可以用「\\ +」來匹配每個連續出現的至少2個反斜槓。 – AndrewMcCoist
@AndrewMcCoist不完全。 ''''在正則表達式和字符串文字中是特殊的。因此,要編寫可以表示正則表達式匹配''''''的字符串,我們需要在正則表達式中''\\'''中退出一次,並且在字符串'「\\\\''中一次。 – Pshemo
哦。對,忘了它是在Java中的字符串:) 我在大多數情況下在Oracle SQL中使用正則表達式,它在那裏更實用。 – AndrewMcCoist