Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: Linux安全网 > Linux入门 > » 正文

正则表达式基础

来源: peaceweb 分享至:

一、正则表达式基础

元字符(metacharacters)是用来阐释字符表达式意义的字符,简言之,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。

正则表达式是由一串字符和元字符构成的字符串,简称RERegular Expression)。

正则表达式的主要功能是文本查询和字符串操作,正则表达式可以匹配文本的一个字符或字符集合。Linux是一套可免费使用和自由传播的类Unix操作系统

ab12等字符属于普通字符,普通字符可以按照字面意思理解,如:a只能理解为英文的小写字母a,没有其他隐藏含义。

*^[ ]等元字符,Shell赋予了它们超越字面意思的意义,如:*符号的字面意义只是一个符号,而实际上却表示了重复前面的字符0次或多次的隐藏含义

                      基本的正则表达式元字符集合及意义

*”符号用于匹配前面一个普通字符的0次或多次重复

hel*o*符号前面的普通字符是l*字符就表示匹配l字符0次或多次,如字符串helohellohellllllo都可以由hel*o来表示

“.”符号用于匹配任意一个字符

…73.表示前面三个字符为任意字符,第4和第5个字符是73,最后一个字符为任意字符,如xcb7384J973U都能匹配上述字符串

“^”符号用于匹配行首,表示行首的字符是^字符后面的那个字符

^cloud表示匹配以cloud开头的行

“$”符号匹配行尾,$符号放在匹配字符之后ab12等字符属于普通字符,普通字符可以按照字面意思理解,如:a只能理解为英文的小写字母a,没有其他隐藏含义。

micky$表示匹配以micky结尾的所有行

“^$” 表示空白行

“[]”匹配字符集合,该符号支持穷举方法列出字符集合的所有元素

[0123456789][0-9]……

[A-Za-z] [A-Za-z]* 匹配所有英文单词

“\”符号是转义符,用于屏蔽一个元字符的特殊意义

\. \$ \^

\<\>符号是精确匹配符号,该符号利用\符号屏蔽<>符号

\<the\> 精确匹配单词thethem, they等不匹配

“\{\}”系列符号表示前一个字符的重复

\{n\}:匹配前面字符出现n次,如 JO\{3\}B 匹配JOOOB

\{n,\}:匹配前面字符至少出现n次,如JO\{3,\}B匹配JOOOBJOOOOBJOOOOOB等字符串

\{n,m\}:匹配前面字符出现n次与m次之间,如JO\{3,6\}B匹配JOOOBJOOOOOOB等字符串

[a-z] \{5\}: 匹配5个小写英文字母,比如hellohouse

二、正则表达式扩展

awkPerlLinux工具还支持正则表达式扩展出来的一些元字符,这些元字符如下表所示
 

三、通配

通配(globbing)是把一个包含通配符的非具体文件名扩展到存储在计算机、服务器或者网络上的一批具体文件名的过程

最常用的通配符包括正则表达式元字符:?*[]{}^等,通配符与元字符意义不完全相同:

*符号不再表示其前面字符的重复,而是表示任意位的任意字符

?字符表示一位的任意字符

^符号在通配中不代表行首,而是代表取反意义

举三个例子:

[root@zawu globus]# ls -l *.awk

[root@zawu globus]# ls -l 0?.pem

[root@zawu globus]# ls -l [a-h]*.[^awk]*

四、grep命令

grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,grep也是Linux中最广泛使用的命令之一

grep [选项][模式][文件…]

选项如下页表所示

模式可以是字符串,也可以是变量,还可以是正则表达式。需要说明的是,无论模式是何种形式,只要模式中包含空格,就需要使用双引号将模式括起来,举例:

[root@zawu globus]# grep certificate 00.pem

[root@zawu globus]# grep user certificate 00.pem

[root@zawu globus]# grep "user certificate" 00.pem

文件可以有多个,亦可以用通配来表示

                               grep命令选项及其意义

1)举几个例子说明grep选项的用法

(1)grep -c :表示输出匹配字符串的数量

   

表示08.pem文件中包有4行包含Certificate

(2)grep -n:表示列出所有的匹配行,并显示行号

表示08.pem文件的第一行包含Certificate并显示整行

(3)grep -v:显示不包含模式的所有行,取反

-c参数合并使用,表示08.pem文件中不包含Certificate的有3

(4)grep -w:元字符不在被解释为特殊含义

首先显示文件包含有Cer开头的文本行,加-w以后表示搜索包含cer*字符串的文本行

(5)grep -x:匹配整行

  

可以看出加-x只显示包含World的行

2grep和正则表达式结合使用的例子

第一个表示搜索空白行,第二个是搜索非空白行并打印行号

首先查找seu.edu.cn的行,发现seuoeduocn也被匹配因为”.”的意识的任意一个字符,下面用“\”转义符将“.”解释为字面含义只匹配seu.edu.cn

这里就先举2个例字,其他的也有好多正则需要我们去慢慢发现。

 

五、grep命令族简介


 

Linux系统支持三种形式的grep命令,通常将这三种形式的grep命令称为grep命令族,这三种形式具体为:

grep:标准grep命令,支持基本正则表达式

egrep:扩展grep命令,支持基本和扩展正则表达式,等价于grep –E

fgrep:快速grep命令,不支持正则表达式,按照字符串的字面意思进行匹配,等价于grep -F


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史