正则表达式常用元字符

正则表达式的使用需要借助于工具程序来实现,我们使用grep来演示正则表达式元字符的使用。

    grep使用方法    

        grep是一种文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。

                正则表达式常用元字符

                使用grep在/etc/passwd文件中找到有”roo”关键字的行并显示了出来

         grep命令的语法:

            grep [OPTIONS] PATTERN [FILE…]  

                PATTERN:文本字符和正则表达式的元字符组合而成的匹配条件                 

                OPTOINS:此处只列举常用的选项

                    –color=auto:给关键字加上颜色

                        正则表达式常用元字符

                        可以在全局配置文件/etc/bashrc中定义命令别名grep=”grep –color=auto”,以使grep命令默认输出颜色

                        正则表达式常用元字符

                     -i:忽略大小写

                        正则表达式常用元字符

                    –v:显示没有被模式匹配的内容                

                        正则表达式常用元字符

                    -o:只显示被模式匹配的串本身

                           正则表达式常用元字符            

                    -n:显示行号

                        正则表达式常用元字符 

                    -A #:显示匹配字符的后面“#”行

                        正则表达式常用元字符

                        显示包含roo字符行的后面一行

                    -B #:显示匹配字符的前面“#”行

                        正则表达式常用元字符

                        显示包含ROO字符行的前面一行

                    -C #:显示匹配字符的前后面“#”行

                        正则表达式常用元字符

                        显示包含roo字符的前后各一行

                   -E:扩展正则表达式

正则表达式:Regular Expression, REGEXP    

     常用正则表达式分为两种

            1. 基本正则表达式(Basic REGEXP)

                grep

            2. 扩展正则表达式(Extended REGEXP)

                egrep、grep -E

    元字符:不表示其字面意义,而用于额外功能性描述

        基本正则表达式的元字符:

            字符匹配

                    . :匹配任意单个字符

                        正则表达式常用元字符

                         r..t:表示以r开头,中间包含两个任意字符并以t结尾的字符串

                    [ ]:匹配指定范围内的任意单个字符

                        正则表达式常用元字符

                        r[a-z]t:表示以r开头,中间包含一个任意小写字母并以t结尾的字符串

                        可以使用一些特殊符号还表示特定的值范围 

                             [[:digit:]]  :表示数字,相当于[0-9]

                             [[:lower:]]:表示小写字母,相当于[a-z]

                             [[:upper:]]:表示大写字母,相当于[A-Z]

                             [[:space:]]:表示任何会产生空白的字符,如空格键、tab键等

                             [[:punct:]]:表示标点符号

                             [[:alpha:]] :表示任何大小写字母,相当于[a-zA-Z]

                             [[:alnum:]]:表示任何大小写字母和数字,相当于[0-9a-zA-Z]

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

                        正则表达式常用元字符

                        r[^[:lower:]]t:表示以r开头,中间包含一位非小写字母并以t结尾的字符串                                 

                次数匹配:用于实现指定其前面的字所能够出现的次数                                       

                    *:任意长度,前面的字符可以出现任意次

                        正则表达式常用元字符

                         r*t:其中r*表示可以为空字符或一个连续r以上的字符;

                            如果需要至少两个r以上的字符串时,使用rrr*来表示

                                正则表达式常用元字符

                            同理需要至少三个r以上的字符串时,使用rrrr*来表示

                               正则表达式常用元字符

                    \?:匹配其前面的字符一次或0次,它前面的字符是可有可无的,其中\为转义字符

                            正则表达式常用元字符

                            rr\?t:表示以r开头,中间有一个或者为空字符并且以t结尾的字符串

                      \{m\}:m次,它前面的字符要出现m次

                            正则表达式常用元字符

                            r\{2\}:表示包含两个连续r的字符串

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

                            正则表达式常用元字符

                            r\{2,4\}t:表示包含2至4个连续r,并且以t结尾的字符串

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

                            正则表达式常用元字符

                            r\{5\}:表示最小出现5个连续的r并且以t结尾的字符串

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

                            正则表达式常用元字符

                            r\{0,5\}:表示最多出现5个连续的r并且为t结尾的字符串

                            正则表达式常用元字符

                            注:结果中出现了上面所示的行,是因为没有限定条件不严格造成的,可以定义字符串首部来得到精确结果

                                正则表达式常用元字符                               

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

                        正则表达式常用元字符

                        r.*t:表示r与t之间为任意字符(包括空字符)的字符串     

            位置锚定:用于定义字符位置的元字符

                ^:锚定行首,此字符后面的任意内容出现在行首。

                    正则表达式常用元字符

                    查找以r开头t结尾的4个字符的字符串开头的行

                $:锚定行尾,此字符前面的任意内容出现在行尾

                    正则表达式常用元字符

                    查找以n结尾的行                  

                 ^$:空白行

                    正则表达式常用元字符                     

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

                    正则表达式常用元字符

                    正则表达式常用元字符

                    包含以op开头的单词的行

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

                    正则表达式常用元字符                

                    正则表达式常用元字符        

                    包含以ot结尾的单词的行        

                可以将两个符号结合使用,精确查找单词

                    正则表达式常用元字符

            分组:

                \( \):把内容分组,括号中的字符将被看作是一个整体进行操作

                    分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用

                    例如:当我们想要查找一个文件中包含至少1个ab的行

                    新建一个文件eg

                    正则表达式常用元字符

                    正则表达式常用元字符

                    引用:

                         \#:引用第#个括号所匹配到的内容,而非模式本身

                        例如:

                            新建一个文件eg1,内容如下:

                            正则表达式常用元字符                           

                            使用分组得到以下结果

                             正则表达式常用元字符

                             下面使用引用来查找对应的行

                             正则表达式常用元字符

                            正则表达式常用元字符                    

                            表达式中的括号是有编号的,从最左边的左括号开始计算,编号从1开始,上面的表达式中有两个左括号,edu前面的为编号1,qa前面的为编号2;而与左括号相对应的右括号则是从里向外就近匹配,上面的表达式中编号为2的表达式为\(qa[[:digit:]]\),编号为1的表达式为\(edc[0-9]\{3\}\(qa[[:digit:]]\)\);     

                            \1表示如果在行中有匹配编号为1的表达式的结果,并且在本行再次出现此表达式的结果时,则此行被选中;如上图的查询结果中1号表达式的结果为”edc123qa7“,而后面又出现了一次此字符串,所以该行被选中;\2则引用2号表达式的结果进行匹配查找,2号表达式的结果为”qa7″,所以结果中列出了再次出现”qa7″字符串的行。

        扩展正则表达式:

                 字符匹配:与基本正则表达式相同

                    . :匹配任意单个字符

                    [ ]:匹配指定范围内的任意单个字符

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

                次数匹配:无需转义字符

                    *:任意长度,前面的字符可以出现任意次

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

                    +:至少1次= \{1,\}

                   {m}:精确匹配m次

                   {m,n}:至少m次,至多n次

                 锚定:与基本正则表达式相同,词首与词尾锚定依然需要转义

                 分组:与基本正则表达式相同,无需转义

                    ():无需转义

                     引用:\1,\2,\3 …

                 或者:

                    a|b:a或者b

                        正则表达式常用元字符 

                    使用扩展正则表达式完成上面的引用查询

                        正则表达式常用元字符

原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/768

(0)
petmasterpetmaster
上一篇 2015-03-10 22:43
下一篇 2015-03-11 10:00

相关推荐

  • 如何使用openssl工具创建私有CA

    一、CA及证书 非对称加密是为了保证互联网中通讯信息安全使用的一种算法,密钥是成对出现(公钥和私钥),它的特点是发送方A使用接收方B的公钥加密数据,所有只有B拥有与之配对的私钥解密该数据,反之亦然。那么,A和B之间怎么交换得到对方的真实安全的公钥呢?此时就需要一个权威的机构来验证公钥的合法性,这个机构称之为CA(Certification Authority…

    2017-07-16
  • centos系统启动流程详解

    centos系统启动流程详解 CentOS启动流程: POST 加电自检 主板上有一个ROM芯片,有只读程序,CPU被设计为一旦通电就会自动去找ROM芯片上的程序并运行,即检查各种硬件设备是否存在。 BootSequence 引导过程 加电自检后按BIOS中设定的次序查找各引导设备,第一个有引导程序的设备即是本次启动用到的设备 MBR(BootLoader)…

    Linux干货 2017-09-04
  • linux目录基础、简单的命令以及运用linux帮助

    计算机组成及其功能     计算机其实是:接收用户输入指令与数据,经过中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息。所以计算机组成可以分为输入单元、输出单元、CPU(控制单元、算术逻辑单元)、内存     输入单元:包括键盘、鼠标、扫描仪、手写板、触摸屏等;实现…

    Linux干货 2016-09-17
  • 游戏运维工程师

    爱乐盟互动为深圳市政府评定的深圳市重点文化企业,同时为广东省高科技产业商会常务理事单位,注册资金人民币1000万元。公司的原创大型MMORPG网游《王者传说2》为深圳市政府重点支持的网游项目,《王者传说2》将全面领先于国内的同类产品,成为业界新标准的重要网游产品!! 《王者传说2》已进入产品研发的重要阶段。除《王者传说2》,爱乐盟也已经启动了数款全新大型网游…

    Linux干货 2016-10-19
  • MySQL入门书籍和方法分享

    原文:http://cenalulu.github.io/mysql/mysql-book-for-newbie/           作者: 卢钧轶     本文罗列了一些适用于MySQL及运维入门和进阶使用的书籍。 背景:各大论坛上总是…

    Linux干货 2015-04-09
  • grep的基本用法详解

     grep是linux上常用的一个文本处理工具之一。它有着强大的文本处理能力,学会它,可以让工作更有效率。 一、初识grep   grep: Global search Regular Experssion and Print out line   从名字上也可以直观的了解到它是基于正则表达式进行全局搜索,并把结果打印到屏幕上来…

    系统运维 2015-05-25