Linux基础知识:正则表达式

    什么是正则表达式?

    我理解的正则表达式就是用来匹配字符串的一种方法。通过一种规则去帮助用户更快捷的达到查找的目的。

    对于系统管理员来说,正则表达式是非常重要的。因为在系统每天都会产生相当多的信息,比如系统的日志文件中记录了很多系统产生的相关信息,如果去查看那么多的信息是相关费时的,而正则表达式则可以用来查询我们需要的信息,过滤掉那些不需要的信息,从而方便我们处理。

    

        正则表达式分为几种,常用的是

            Basic REGEXP: 基本正则表达式

            Extended REGEXP:扩展正则表达式

        

字符集合表示方式:   

[[:lower:]]

所有的小写字母;

[[:upper:]]

所有的大写字母;

[[:alpha:]]

所有的字母;

[[:digit:]]

所有数字;

[[:alnum:]]

所有的字母和数字;

[[:punct:]]

所有的标点符号;

[[:space:]]

所有的空白字符;

 

[^[:lower:]]

除了小写字母

 

grep:基本正则表达式

 

使用基本正则表达式定义的模式来过滤文本的命令贪婪模式尽可能长的去匹配

部分匹配显示整行

 

-i:忽略大小写

-o : 只显示被匹配的字符串

--color:把匹配到的高亮

可用 alias grep='grep --color' 设置grep别名

-v:显示没有匹配到的行

-n:在显示匹配文本的那一列之前标示出该列的是多少列 

-E:使用扩展表达式

 

字符匹配

.    :匹配任意单个字符

[]     :   匹配指定单个字符

[^]   :   匹配指定范围外的单个字符

 

次数匹配

        *     :   匹配其前面的字符任意次可以0

\?     :    匹配其前面的字符1次或0

\{m,n\}:匹配其前面的字符最少m最多n

    例如\{2\}匹配其前面的字符最少2最多无上限无上限时n可省略

     \{0,2\}匹配其前面的字符最少0最多2,m不可省略

.*     : 任意长度的任意字符

 

锚定

^:其后面的字符锚定行首

$:其后面的字符锚定行尾

 

^PATTERN$  用模式匹配整行

^ab.*c$  ab开头中间有任意并以c结尾的行

^$        匹配空白行

^[[:space:]]$  Tab键也算space 匹配完全空白行

 

\<其后面的字符锚定单词首部        [ \b.*\b ==\<.*>\   \> 不等于 \b ]

\>其后面的字符锚定单词尾部 

\(\) : 分组\(ab\)  用于反向引用  子表达式   \1,\2,\3….

  

在子表达式中(a.b).*\1 表示匹配第一个子表达式匹配到的字符

      amb hello anb 不匹配

amb hello amb 匹配

 

 

 

eqrep:扩展正则表达式

字符匹配:(grep一致

.    :匹配任意单个字符

[]     :   匹配指定单个字符

[^]   :   匹配指定范围外的单个字符

 

次数匹配

*     :   匹配其前面的字符任意次可以0

?       :    匹配其前面的字符1次或0(相比grep不用加\)

+       :    匹配其前面的字符至少1?+     =    grep*)

{m,n} :匹配其前面的字符最少m最多n(相比grep不用加\)

 

锚定

^:其后面的字符锚定行首

$:其后面的字符锚定行尾

\< 其后面的字符锚定单词首部

\> 其前面的字符锚定单词尾部

(): 分组, 用于反向引用  子表达式   \1,\2,\3….

 

|:或者 a|b 表示 a或者b

C|cat  表示 C或者cat

(C|c)at 表示 Cat或者cat

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章