我必须用中的'\'
替换所有出现的'\''\'
。我知道正则表达式"\\\\"
意味着\
,但我如何编写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