小编Jef*_*rey的帖子

带有后引用的Java String.replaceAll()

有一个Java Regex问题:给定一个字符串,如果"*"位于字符串的开头或结尾,请保留它,否则删除它.例如:

  1. * - > *
  2. ** - > **
  3. ******* - > **
  4. *abc**def* - > *abcdef*

答案是:

str.replaceAll("(^\\*)|(\\*$)|\\*", "$1$2");
Run Code Online (Sandbox Code Playgroud)

我在我的机器上尝试了答案,但它确实有效.但我不知道它是如何工作的.

根据我的理解,所有匹配的子串应该替换为$1$2.但是,它的工作原理如下:

  1. (^\\*)替换为$1,
  2. (\\*$)替换为$2,
  3. \\* 换成空的.

有人能解释它是如何工作的吗?更具体地说,如果|表达式之间存在,那么如何String.replaceAll()使用后向引用?

先感谢您.

java regex

12
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×1

regex ×1