码迷,mamicode.com
首页 > 其他好文 > 详细

正则 表达式

时间:2015-04-03 06:57:03      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:正则

grep :   Global search REgular expression and Printout the line.

文本搜索工具。根据用户指定的文本模式(正则表达式元字符及正常字符组合而成)对目标文件进行逐行搜索,显示能匹配到的行。

       grep 命令:

              grep [OPTIONS] PATTERN [FILE...]

              --color[=WHEN](输出是把匹配到的字符是否标记)

                     参数如下:

                     auto

                     always

                           never

技术分享

              -o 显示被匹配到的内容(特定环境需要)

例如:使用echo命令输出一个绝对路径,使用grep 取出基名。

[root@localhost /]# echo /etc/rc.d/init.d/functions | grep -o -E "[[:alnum:]]+/?$" 

functions


              -i ignore(忽略) 不区分字符大小写。(适用于单字符)

技术分享


              -v   不能被模式匹配到的(反向选取)

技术分享

              -E 使用扩展的正则表达式

 

              -A 

技术分享

              -B 

技术分享

              -C  

技术分享

正则表达式(REGEXP):元字符和正常字符所书写的模式。

       基本正则表达式:(grep)

       扩展的正则表达式:(egrep)

              元字符的功能:表达控制或统一匹配。

              元字符匹配:

                     .   匹配任意单个字符。(个数为一个)

                     []  指定范围内的单个字符。

                     [^] 指定范围外的单个字符。

                     [[:digit:]]   数字  ([:digit:]=[0-9])

                     [[:lower:]][[:upper:]]  ,大    写字母

                     [[:space:]]  空白字符

                     [[:punct:]]  标点符号

                     [[:alnum:]]  所有的字母(包括大小写)和数字

                     [[:alpha:]]  所有字符(包括大小写)

                     [[::]]这里的 :: 需要特特别注意,别打错了。不然命令行解释不了。

技术分享

              次数匹配:

                            * 任意长度(0-无穷次) 

                             .*  组合表示任意长度任意字符

技术分享

                             \?  匹配前面字符0-1次;

                             \+  1次或多次

                             \{m\} m

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

                             \{0,n\} 至多n

                             \{m,\} 至少m

技术分享

              位置锚定(出现的位置):

                     ^   行首

技术分享

                     $   行尾 

技术分享

                     ^$   连用可以匹配整行。

技术分享

                     \<   \b 匹配块首(字符串不包括空格字符)

技术分享

                     \>   \b 匹配块尾

技术分享

                     \< \>  \b \b  整块匹配

例子:ifconfig 命令后,匹配出现一次或两次的数字  技术分享

              分组:\(\)

                  注意:分组中的模式,在某次的具体匹配过程中的所匹配的字符,可以被grep 记忆(保存于内置的变量中),还可以被引用。

                  \1:引用,模式中自左而右,由第一个左括号以及与之对应的右括号中的模式所匹配到的内容。

技术分享

                  \2:引用,模式中自左而右,由第二个左括号以及与之对应的右括号中的模式所匹配到的内容。

 

扩展的正则表达式:(表现形式不同,意义都一样。只是有些不用 \ )

              字符匹配:

                .   匹配任意单个字符。(个数为一个)

                     []  指定范围内的单个字符。

                     [^] 指定范围外的单个字符。

                     [[:digit:]]   数字  ([:digit:]=[0-9])

                     [[:lower:]][[:upper:]]  ,大    写字母

                     [[:space:]]  空白字符

                     [[:punct:]]  标点符号

                     [[:alnum:]]  所有的字母(包括大小写)和数字

                     [[:alpha:]]  所有字符(包括大小写)

              次数匹配:

                            * 任意长度(0-无穷次)

                        ?  匹配前面字符0-1次;

                             +  1次或多次

                             {m} m

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

                             {0,n} 至多n

                             {m,}    至少m

              位置锚定(出现的位置):

                     ^

                     $

                     \<  \b    (唯一grep egrep  \ 没变的)

                     \>  \b    (唯一grep egrep  \ 没变的)

              分组:

                     ()

                     引用:\1,\2,.....



               或者:

                    a|b

技术分享

例子:找出ifconfig命令结果中的1-255之间的数字。

[root@localhost /]# ifconfig | grep -E "\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|25[0-5])\b"

eth0      Link encap:Ethernet  HWaddr 00:0C:29:79:E3:14  

          inet addr:172.16.249.71  Bcast:172.16.255.255  Mask:255.255.0.0

          inet6 addr: fe80::20c:29ff:fe79:e314/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX bytes:7696098 (7.3 MiB)  TX bytes:1477862 (1.4 MiB)

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

 

 

 

 

 

 


正则 表达式

标签:正则

原文地址:http://7552567.blog.51cto.com/7542567/1627814

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!