“([%_])”正则表达式在Java中意味着什么?

时间:2018-02-20 18:07:23

标签: java regex regex-group

以下代码/正则表达式在Java中的作用是什么。我正在查看另一个开发人员编写的代码,但我无法做出以下正则表达式所做的事情?除了它是一个众所周知的正则表达模式使用圆和方括号?

str.replaceAll("([%_])", "\\$1");

2 个答案:

答案 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)

此代码只是为每个'%''_'字符转义,前缀为反斜杠。