正则表达式

vim中查找/

         替换s,一般格式 %s/ / /

         列全部%,只找到每行第一个

         行全部g,只找光标所在整行

通配符与正则表达式区别:

  通配符常与shell命令配合,与文件名相关

  正则表达式通常用于文件的内容搜索查找、替换有关

分类:①、基础

           ②、扩展

一、基础正则表达式

       原字符分类:①、字符匹配   ②、匹配次数   ③、位置锚定    ④、分组

字符匹配

.  任意单个字符,如r..o

[ ]  选定的字符,如[a-zA-Z];  [a-z]<=>[[:lower:]]

匹配次数

*      匹配前面一个字符任意次,包括0次。如oo*——>查找至少有一个o开头的

.*       任意长度字符。包括贪婪模式,如root:oo:ro:taaa——>输入/r.*t——>root:oo:ro:t

\?      匹配前面一个字符任1次或1次,即可有可无。(如果有符号需要用\转义,例/etc\/\?)

\+      匹配前面一个字符任至少1次,即肯定有。

\{n\}     匹配前面一个字符n次

\{m,n\} 匹配前面一个字符m到n次

\{,n\}    匹配前面一个字符n次以下

\{n,\} 匹配前面一个字符n次以上

[0-9]{n}       一个n位的数字串(这是扩展正则)

[0-9]{n-m}   一个n到m位的数字串(这是扩展正则)

位置锚定

^  以xx开头,例^#。

将每行加上#注释:%s/^/#/

$  以xx结尾,例n$

/正则表达式/    搜索匹配的行,例以s开头的行:/^s/

^$  空行

/<  单词词首。(除字母、数字、_,其他都算分隔符)    例/<a

/>  单词词尾。例b/>

/< 单词/>  指定单词

分组

 

\(单词\)     例将root换为rooter:%s/\(root\)/\1er/g   <==>   %s/\(root\)/&er/g 注意:\1代表第一个()里的内容,/2就代表第二个。&代表前面搜的啥,我就是啥

\|  或  例如:a\|b <==> [ab]        \(c\|C\)at代表cat或Cat       ^\(a\|b\)代表以a开头或b开头

 

二、扩展正则表达式:基本不需要转移字符\了。某些与基础正则表达式还是一样的。但需要工具支持才可以使用。

set noic  不忽略大小写

 

posted @ 2020-04-20 19:37  ldyaly  阅读(293)  评论(0编辑  收藏  举报