有一个Java Regex问题:给定一个字符串,如果"*"位于字符串的开头或结尾,请保留它,否则删除它.例如:
* - > *** - > ********* - > ***abc**def* - > *abcdef*答案是:
str.replaceAll("(^\\*)|(\\*$)|\\*", "$1$2");
Run Code Online (Sandbox Code Playgroud)
我在我的机器上尝试了答案,但它确实有效.但我不知道它是如何工作的.
根据我的理解,所有匹配的子串应该替换为$1$2.但是,它的工作原理如下:
(^\\*)替换为$1,(\\*$)替换为$2,\\* 换成空的.有人能解释它是如何工作的吗?更具体地说,如果|表达式之间存在,那么如何String.replaceAll()使用后向引用?
先感谢您.