Vim中查找替换及正则表达式的使用详解

作者:Cooper 时间:2023-11-06 11:42:44 

前言

正则表达式是文本处理领域中的一个强大的工具,它可以让文本处理的能力呈指数级的提升,如果一款文本编辑器不支持正则表达式,那么它就算不上是一个现代化的编辑器,这绝非虚言。

下面这篇文章主要跟大家介绍了关于Vim查找替换及正则表达式使用的相关内容,分享出来供大家参考学习,下面来一起看看吧。

简单替换表达式

:[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选项,则只替换每行的第一个匹配到的字符串;

  • i ignore,忽略大小写。

这些选项可以合并使用,如cgi表示不区分大小写,整行替换,替换前询问。

正则表达式

1、元字符

元字符

元字符说明
.匹配任意字符
[abc]匹配方括号中的任意一个字符,可用-表示字符范围。如[a-z0-9]匹配小写字母和数字
[^abc]匹配除方括号中字符之外的任意字符
\d匹配阿拉伯数字,等同于[0-9]
\D匹配阿拉伯数字之外的任意字符,等同于[^0-9]
\x匹配十六进制数字,等同于[0-9A-Fa-f]
\X匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]
\l匹配[a-z]
\L匹配[^a-z]
\u匹配[A-Z]
\U匹配[^A-Z]
\w匹配单词字母,等同于[0-9A-Za-z_]
\W匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]
\t匹配<TAB>字符
\s匹配空白字符,等同于[\t]
\S匹配非空白字符,等同于[^\t]

一些普通字符需转意

元字符说明
\*匹配* 字符
.匹配. 字符
\/匹配 / 字符
\匹配 \ 字符
\[匹配 [ 字符
\]匹配 ] 字符

表示数量的元字符

元字符说明
*匹配0-任意个
\+匹配1-任意个
\?匹配0-1个
\{n,m}匹配n-m个
\{n}匹配n个
\{n,}匹配n-任意个
\{,m}匹配0-m个

表示位置的元字符

元字符说明
$匹配行尾
^匹配行首
\<匹配单词词首
\>匹配单词词尾

2、替换变量

在正则式中以\(和\)括起来的正则表达式,在后面使用的时候可以用\1、\2等变量来访问\(和\)中的内容。

例子

  • 删除行尾空格::%s/\s+$//g

  • 删除行首多余空格:%s/^\s*// 或者 %s/^ *//

  • 删除沒有內容的空行:%s/^$// 或者 g/^$/d

  • 删除包含有空格组成的空行:%s/^\s*$// 或者 g/^\s*$/d

  • 删除以空格或TAB开头到结尾的空行:%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d

  • 把文中的所有字符串“abc……xyz”替换为“xyz……abc”可以有下列写法


:%s/abc\(.*\)xyz/xyz\1abc/g
:%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g

来源:http://tanqisen.github.io/blog/2013/01/13/vim-search-replace-regex/

标签:vim,正则表达式,查找替换
0
投稿

猜你喜欢

  • 微信小程序 数据缓存实现方法详解

    2024-04-19 09:49:22
  • 浅谈mysql的索引设计原则以及常见索引的区别

    2024-01-22 23:58:49
  • 从XML中读取数据到内存的实例

    2008-09-04 14:43:00
  • php下intval()和(int)转换使用与区别

    2023-06-11 14:09:54
  • Python二进制转化为十进制数学算法详解

    2021-11-09 19:45:20
  • python判断文件夹内是否存在指定后缀文件的实例

    2021-12-27 23:05:19
  • python从PDF中提取数据的示例

    2021-10-15 21:46:05
  • OpenCV 读取图像imread的使用详解

    2022-02-07 02:00:22
  • 一空间多域名绑定不同目录方法

    2009-03-09 18:32:00
  • JavaScript ES6 Class类实现原理详解

    2024-02-24 07:54:49
  • asp添加数据实现代码

    2011-02-05 10:42:00
  • python基于exchange函数发送邮件过程详解

    2021-03-23 02:12:22
  • 动态导航设计

    2008-09-21 13:40:00
  • Python 常用 PEP8 编码规范详解

    2022-09-03 06:21:12
  • Python中空格的转义字符方式

    2021-07-02 01:22:33
  • Python +Selenium解决图片验证码登录或注册问题(推荐)

    2022-12-30 05:41:51
  • 为SQL Server数据库传数组参数的变通办法

    2009-10-23 09:26:00
  • python OpenCV图像直方图处理

    2022-05-28 06:31:45
  • Python中True(真)和False(假)判断详解

    2021-12-16 11:22:36
  • 高考考python编程是真的吗

    2023-11-13 04:48:47
  • asp之家 网络编程 m.aspxhome.com