再利 发表于 2024-3-13 00:48:14

VIM-灰常有用的正则匹配

一、VIM,GVIM中正则匹配的用处

VIM的一个强大之处就在于其文本搜索、匹配的能力,可用于替换、删除、查找等,极大提升用户的文本编辑效率,写代码必备技能。
二、常用的匹配字符

大体上可以分为四类,字符的匹配、数量的匹配(也可理解为匹配次数)、位置的匹配(开头、结尾等),和特殊字符的匹配。
2.1 字符的匹配

常用的字符匹配如下表:
字符含义.匹配任意字符匹配方括号中的任意字符[^xxx]匹配除了方括号内字符以外的任意字符\d匹配任意数字,相当于\D匹配除了数字以外的任意字符,相当于[^0-9]\l匹配字母a-z\L匹配字母a-z以外的其他字符\u匹配字母A-Z\U匹配字母A-Z以外的其他字符\x匹配十六进制数,相当于\X匹配十六进制数以外的字符,相当于[^0-9a-fA-F]\w匹配任意word,简单来说就是任意数字、字母组成的一个无空白字符的字符串,两个字符串中间有空白字符的会被认为是两个word\s匹配空白字符,会将空格和tab都匹配到\S匹配空白字符以外的字符\t匹配tab字符2.2 数量的匹配(匹配次数)

一般格式是“字符匹配pattern次数匹配pattern”,表示将符合字符匹配pattern的字符匹配次数pattern次。注意使用时下表中除 * 外其他的前边的反斜杠不要丢掉。
字符含义*匹配任意多次\?匹配0-1次\+匹配1-任意多次\'{n,m}'匹配n-m次\'{n}'匹配n次\'{n,}'匹配n到任意次\'{,n}'匹配0-n次注:实际使用时花括号两侧的单引号不用打,这里是markdown的问题,不打单引号啥都显示不出来。2.3 匹配位置

指明匹配的位置,一般就行首行位词头词尾,要注意位置匹配时看清楚有没有空格,比如不要匹配行首时默认忽略了开头的空白字符从而导致匹配失败。
字符含义^匹配行首$匹配行尾\</tdtd匹配词首/td/trtrtd\>匹配词尾2.4特殊字符

有一些字符因为本身具有特殊含义,上边基本也都提到了,所以在匹配这些字符时要加反斜杠。
字符含义\.匹配字符“.”\*匹配字符“*”\$匹配字符“$”\ [匹配字符“[”,字符“]”同理,但是若直接匹配“[”和"]"也可以匹配到,加反斜杠一般用于和2.1中匹配方括号内任意字符的情况区分开\{同上\ /匹配字符“/”, 字符“\”同理三、小练习

这里我们用vim的底行搜索举几个例子。
1.匹配开头是“aaa”的


2.只匹配“aaa”

3.匹配一个字母加一个数字

4.匹配拥有四个"ha"的单词(圆括号字符分组)
这里用到了圆括号字符分组的方法,将ha看做一个整体,匹配满足次数的单词。

上图的匹配模式为:将ha看做整体,匹配四次
比如我不知道我想找的单词里有多少次ha,呢么也可以按照下面的办法来。

上图的正则匹配式的含义是:匹配以ha开头,ha匹配任意多次,词尾也是ha的。
小结
vim中正则匹配的用处很多,如搜索、替换、删除、文本提取(见上篇文章:https://blog.csdn.net/weixin_43655109/article/details/133213974)等等,用好的话可以大大提高工作效率。

来源:https://www.cnblogs.com/xiaoguoic/p/18069149
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: VIM-灰常有用的正则匹配