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