以下代码/正则表达式在Java中的作用是什么。我正在查看另一个开发人员编写的代码,但我无法做出以下正则表达式所做的事情?除了它是一个众所周知的正则表达模式使用圆和方括号?
str.replaceAll("([%_])", "\\$1");
答案 0 :(得分:1)
该模式只是用%
子字符串替换任何_
或$1
,与.replace("%", "$1").replace("_", "$1")
相同。
或许,它应该是str.replaceAll("([%_])", "\\\\$1");
,以便$1
可以被解析为反向引用,然后它将转义为%
和_
。
请参阅Java demo:
System.out.println("% and _".replaceAll("([%_])", "\\$1")); // => $1 and $1
System.out.println("% and _".replaceAll("([%_])", "\\\\$1")); // => \% and \_
答案 1 :(得分:0)
此代码只是为每个'%'
或'_'
字符转义,前缀为反斜杠。