首页 > 技术文章 > 正则 捕获组之反向引用

mysgk 2018-08-05 21:27 原文

之前写正则的时候,经常用到 (.*?) 之类的用法.一般在替换的时候会用 $1 来引用括号里面匹配到的内容
比如,

1.1.1.1 aaaa
2.2.2.2 bbbb
3.3.2.3 ccca

我们想在这段这文本的数字后面重复加上一个与最后一个数字相同的数字,即替换后的文本应该为

1.1.1.11 aaaa
2.2.2.22 bbbb
3.3.2.33 ccca

那么我们可以使用(\d) 替换成 $1$1
如图:

这里括号里面的内容我们称之为 捕获组.
在替换里面我们可以使用$1进行引用,同样的在查找中我们也可以引用,称之为反向引用,只不过引用的方式改为 \1,它的使用方法跟替换中基本一致
比如我们现在想把原文中同一行数字全部相同的都查找出来,那么我们可以使用反向引用来查找
如图:

此处我们使用了\1\2
在捕获组中,第一个左括号与其匹配的右括号括起来的内容即用\1引用,\2同理,即第二 个左括号与其匹配的右括号括起来的内容.
在替换中也同样如此,$1 即 第一个左括号与其匹配的右括号括起来的内容

推荐阅读