介绍一下捕获组
捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用。当然,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部。
简单的说就是把正则表达式匹配的别结果以变量的形式再次调用。
捕获组命名
如果没有显式为捕获组命名,即没有使用命名捕获组,那么需要按数字顺序来访问所有捕获组。在只有普通捕获组的情况下,捕获组的编号是按照“(”出现的顺序,从左到右,从1开始进行编号的。
注意:0代表整个组。
例:
正则表达式:(\d{4})-(\d{2})-(\d\d)
匹配:2018-06-01
结果:
-. 0代表:2018-06-01
-. 1代表:2018
-. 2代表:06
-. 3代表:01
引用
普通捕获组反向引用:\k<number>,通常简写为\number
例:
\0 , \1, \2, \3
运用场景
现有函数:
how(a,b);
how(c,x);
how(m,n);
改成:
how(a,b,a);
how(c,x,c);
how(m,n,m);
如果大量这种代码需要更改,这样使用正则表达式就会方便很多。
实现:
查找正则表达式:
^.*(how)\(([a-zA-Z]*),([a-zA-Z]*)\);
替换正则表达式:
\1(\2,\3,\2);
解释:
(how) 捕获 how 结果放于 1 内
([a-zA-Z]*) 捕获 参数1 结果放于 2 内
([a-zA-Z]*) 捕获 参数2 结果放于 3 内
\number 输出 捕获组
大功告成,回家睡觉。_
网友评论