逛论坛看到如题的正则表达式替换,看了很久没看懂,就上网查资料学习了一下
语句本身是个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分别表示第一个()和第二个()匹配的值