linux中正则表达式的用法自解

  在马哥这已经学习了等二个星期了,虽然每天都很累,但是收获颇丰,这也许就是那种痛苦并快乐的感觉吧。第一次写博客,不知道该怎么开始,就先闲聊两句,下边言归正传。本次我们探讨关于linux系统中关于正则表达式的作用、用法等内容一一讲解。

正则表达式的作用

linux中,一切内容都是以文件形式出现的,而文件又保存在目录下,文件内容等所有都是以字符串和数字,加一些符号组成的,这也就是说如果我们要匹配出一行字符串我们可以用到一些特殊字符表示为不同的内容,比如“*”表示任意单个字符,“?”表示任意单个字符,在匹配复杂字符串时这些就显得苍白无力,所以我们迫切需要一个能精确匹配任意字符串的表达方式,而正则表达式就是在这个大背景下应运而生的,它解决了上述所有不能完成的功能,用各种特殊字符完美诠释。

Grep命令

讲到正则表达式,就不能不说到grep命令。正则表达式在grep命令中能完美运用,下边我们来讲grep命令。Grep命令是根据模式搜索文本,并将符合模式的文本行显示出来,坦白说它是一个文本查找命令.下面说常用选项:

 选项

-E:使用扩展正则表达式,可以用egrep命令代替,下边再讲。

-A:显示此行下n行,下同。

-B:显示此行上n行。

-C:显示此行下n行。

基础正则表达式

Grep命令默认只可以使用基础正则表达式,内容如下:

元字符:

.:任意单个字符

【】:匹配指定范围内的任意单个字符

^:匹配字指定范围外的任意单个字符

匹配次数:

*:匹配前面的字符任意次

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

\?:匹配前边的字符一次或零次

\{m,n\}:匹配前边的字符至少m,至多n

位置锚定:

^:此字符后面的任意内容必须出现在行首

$:此字符后面的任意内容必须出现在行尾

^$:空白行

\<\b:其后面的任意字符必须作为单词首部出现

\>\b:其后面的任意字符必须作为单词尾部出现

 

分组

\(\):后向调用

\n:匹配前面n个括号内内容

Egrep命令

Egrep命令是grep –e命令的简写,其主要功能就是使用扩展正则表达式。其选项基本和grep命令一样,这里就不再说了。我们主要来说一下扩展正则表达式的内容。

扩展正则表达式

顾名思义,其为基础正则表达式的扩展形式,其很多内容都和基础的一样,下面我们来说说不一样的内容。

 

次数匹配:

+:匹配其前边的字符至少一次

{m,n}匹配其前内容至少m次,至多n

 

分组:

():分组

a|b:或者

 

这里要说到扩展正则表达式中“.”用“\”表示。

 

 

写到这里正则表达式基本就讲完了,说得简单,真正要用真正表达式来精确匹配字符串还需要大家自己不断尝试。另外grep命令中还有fgrep命令,它不支持正则表达式,本次主讲正则表达式,就不再讲了。希望大家能从本文中有所帮助,谢谢!

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