在正规表达式中使用 \( 和 \) 符号括起正规表达式,即可在后面使用\1 \2等变量来访问捕获的内容。 将捕获内容前后交换,如下: :s/\(\haha\)\(hehe\)/\2\1/ 时间: 2024-11-03 05:43:58
http://www.cppblog.com/kefeng/archive/2010/10/20/130574.html Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作. 如果你比较熟悉Perl的正规表达式,可以直接参照与Perl正则表达式的区别一节. 一.使用正则表达式的命令 使用正则表达式的命令最常见的就是 / (搜索)命令.其格式如下: /正则表达式 另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串. :s/正
最近使用vim的正则替换功能,非常强大 一个文件: 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 现在需要删除逗号前面的内容,那么在vim敲入命令: :%s/.*,//g 得到的结果是: 3 6 3 6 3 6 3 6 3 6 如果想要替换第一个逗号前面的内容该如何哪? :%s/.\{-},// 结果是: 2,3 5,6 2,3 5,6 2,3 5,6 2,3 5,6 2,3 5,6
1.var reg=/./与var reg=/\./的区别? 前者代表任意一个字符, 后者代表这个字符串中得有一个点 2.?的使用 如果单独的一个字符后面带? 代表1个或0个这个字符的出现: 列如: /\d?/ 如果量词+后面带? 取消正则的贪婪性 在捕获的阶段 3.捕获: 1.普通捕获 正则的方法exec() 字符串的方法match() 普通捕获有懒惰性: 给正则添加一个修饰符g,可以解决: match是将所有捕获的内容放在一个数组中,并返回,match就是exec()对函数的简单封装 2.分
:[range]s/from/to/[flags] range:搜索范围,如果没有指定范围,则作用于但前行. :1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之间搜索替换: :10s/from/to/ 表示只在第10行搜索替换: :%s/from/to/ 表示在所有行中搜索替换: 1,$s/from/to/ 同上. flags 有如下四个选项: c confirm,每次替换前询问: e error, 不显示错误: g globle,不询问,整行替换.如果不加g选项,则只
目的: 给表达式 '10+6/5-4*2' 中每个运算符左右都加一个空格字符,变成:'10 + 6 / 5 - 4 * 2' 思路: 分组.捕获.替换 1. 替换字符中含参数 \1 (此处不能叫参数,想不到叫什么,那就不管它~~) >>> bds = '10+6/5-4*2' # 表达式 >>> m = re.sub(r'([*+-/])', ' \1 ', bds) # 注意\1左右皆有一个空格!! >>> m '10 + 6 / 5 - 4 * 2
目的 实现替换 c f[i][j][k] -> f[k][i][j] f[i + 1][j][k] -> f[k][i + 1][j] f[i + 1][j + NY][k] -> f[k][i + 1][j + NY] 实现方法 :%s/\[k\]\(\[.\{,6}\]\)\(\[.\{,6}\]\)/\1\2\[k\]/g
实例创建与字面量创建的区别: 1.实例创建的方式需要多转译一次,把具有特殊意思并且带\的都要多转译一次 var reg = /\d/; var reg = new RegExp("\\d"); 2.在字面量方式中,用"//"包起来的都是我们的元字符,有具有特殊意义的元 字符.代表出现次数的量词元字符.代表本身意思的普通元字符,字面量方式无法识别变量,实例创建的方式可以 var c = "w100"; var reg = /^"+c+&q
代码: 输出结果 补充: reg.lastIndex:下一次正则捕获的开始查找的索引位置 ->正则的懒惰性就是因为默认情况下lastIndex值都是0,我们不管执行几次exec,都是从字符串的开始位置查找,那么每一次捕获到的都是第一个符合的内容