java正则表达式捕获组的问题"^([^.]+\\.)+" []中算一个捕获组吗,()外^+算在捕获组中吗

replaceAll("^([^.]+\\.)+","$1")会捕获到([^.]+\\.)的内容吗... replaceAll("^([^.]+\\.)+", "$1")会捕获到([^.]+\\.)的内容吗 展开
 我来答
绯弹亚丝娜
2014-11-06 · TA获得超过1094个赞
知道小有建树答主
回答量:330
采纳率:100%
帮助的人:134万
展开全部
  1. []不算一个捕获组

  2. ()外的内容不算在捕获组当中,而且^+本来就不会被捕获……

     

举个例子:

"123.456.789.".replaceAll("^([^.]+\\.)+", "$1")

字符串123.456.789.最后会被替换为789.因为捕获组$1最后捕获的内容是789.

更多追问追答
追问

我好想跟你不一样

[^.]的意思是不以字符开头,怎么回事。

$1不是反向获取捕获组的第一个吗,怎么去的是中间的。

追答
[^.]的意思是匹配所有不是.点的字符,[^.]+表示捕获所有连续的不是点的字符串。

之所以com没有被替换,是因为资源的内容是com而不是com.
注意我上面的例子中789后面还有个.点

分组([^.]+\\.)中要求匹配\\.所以必须有点,com后面没点,所以不在捕获内容当中,也就不会被替换
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式