美文网首页程序员
全局字符串替换之正则表达式

全局字符串替换之正则表达式

作者: Lee_5566 | 来源:发表于2018-06-01 18:06 被阅读22次

介绍一下捕获组

捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用。当然,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部。

简单的说就是把正则表达式匹配的别结果以变量的形式再次调用。

捕获组命名

如果没有显式为捕获组命名,即没有使用命名捕获组,那么需要按数字顺序来访问所有捕获组。在只有普通捕获组的情况下,捕获组的编号是按照“(”出现的顺序,从左到右,从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  输出 捕获组

大功告成,回家睡觉。_

相关文章

  • Vim常用配置

    替换 语法为 :[addr]s/源字符串/目的字符串/[option]全局替换命令为::%s/源字符串/目的字符串...

  • Vi用法

    替换 语法为:[range]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符...

  • 全局字符串替换之正则表达式

    介绍一下捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用。...

  • 【python基础】9-文本处理

    字符串方法 正则表达式 模式匹配和提取 搜索和替换 编译正则表达式 正则表达式进一步阅读 字符串方法 转换字符st...

  • JavaScript正则表达式

    一、认识正则表达式 正则表达式是描述字符模式的对象,正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹...

  • String replaceAll和replace

    两者都是全部替换replaceAll 可以是基于正则表达式的替换,replace 是字符或者字符串的对比替换,如果...

  • lua string.gsub

    string.gsub (s, pattern, repl [, n]) :全局替换字符串;将字符串 s中,所有的...

  • 正则表达式

    导语 正则表达式的作用: 测试字符串内的模式 替换文本 基于模式匹配从字符串中提取子字符串 语法 正则表达式的各组...

  • 正则表达式(W3C笔记)

    通过使用正则表达式,可以: 测试字符串中的模式 替换文本 基于模式匹配从字符串中提取子字符串 正则表达式的应用领域...

  • vim 替换

    查找与替换:s(substitute)命令用来查找和替换字符串。语法如下: 例如:%s/foo/bar/g会在全局...

网友评论

    本文标题:全局字符串替换之正则表达式

    本文链接:https://www.haomeiwen.com/subject/uhudrftx.html