Java String.replaceAll() 与反向引用
有一个Java正则表达式问题:给定一个字符串,如果“*”在字符串的开头或结尾,请保留它,否则将其删除。例如:
-
*
-->*
-
**
-->**
-
*******
-->**
-
*abc**def*
-->*abcdef*
答案是:
str.replaceAll("(^\\*)|(\\*$)|\\*", "$1$2");
我在我的机器上尝试了答案,它的工作原理。但我不知道它是如何工作的。
根据我的理解,所有匹配的子字符串都应替换为 。但是,它的工作原理是:$1$2
-
(^\\*)
替换为 、$1
-
(\\*$)
替换为 、$2
-
\\*
替换为空。
有人可以解释它是如何工作的吗?更具体地说,如果表达式之间存在,如何使用反向引用?|
String.replaceAll()
提前感谢您。