正则表达式

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  不忽略大小写