关于str.replaceAll("(.+)(.*?)\\1","$1$2")的理解

逛论坛看到如题的正则表达式替换,看了很久没看懂,就上网查资料学习了一下

语句本身是个replaceAll(str1,str2)就是str2替换掉str中所有的str1           

"(.+)(.*?)\\1"表示什么意思呢?

.表示单个字符+表示一个或多个, .+表示一个或多个单字符。

()是什么意思呢?

举个例子  

 ( a.)+  表示一个或多个a.此处.表示字符      

 a(.+)表示a一个或多个.

区别在于第一个表示的a和.数量是相同的

第二行只有一个a

所以()的意思就是限定+修饰的字符

(.*?)表示任意多个单字符(包括没有) 这个?是什么意思呢?表示最小的匹配

\\1表示第一个括号中匹配到的字符


字符串a2a2a2中"(.+)(.*?)\\1" 改变后为a2a2  即$1匹配和\\1是相同的只能是a2 $2就匹配为中间的a2

若字符串为1111则$1和\\1匹配的就是11和11$2匹配到的就是空的 

$1$2分别表示第一个()和第二个()匹配的值



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值