正则表达式

果要用grep 查找一个模式,如何表示这个模式,这一类字符串,而不是一个特定的字符串呢?从
这两个简单的例子可以看出,要表示一个模式至少应该包含以下信息:
字符类(Character Class):如上例的x和y,它们在模式中表示一个字符,但是取值范围是
一类字符中的任意一个。
数量限定符(Quantifier): 邮件地址的每一部分可以有一个或多个x字符,IP地址的每一部

分可以有1-3个y字符各种字符类以及普通字符之间的位置关系:例如邮件地址分三部分,

用普通字符@和.隔,IP地址分四部分,用.隔开,每一部分都可以用字符类和数量限定符描述。

为了表示位置关系,还有位置限定符(Anchor)的概念

表 32.1. 字符类
字符 含义 举例
. 匹配任意一个字符 abc. 可以匹配abcd 、abc9 等
[] 匹配括号中的任意一个字符 [abc]d可以匹配ad 、bd 或cd

- 在[]括号内表示字符范围

^ [^xy] 匹配除xy 之外的任一字符,因 位于[]括号内的开头,匹配除括

     此[^xy]1可以匹配a1、b1但不匹 号中的字符之外的任意一个字符配x1、y1
[[:xxx:]] [0-9a-fA-F] 可以匹配一位十六进制数字
grep 工具预定义的一些命名字符 [[:alpha:]]匹配一个字
类母,[[:digit:]]匹配一个数字
表 32.2. 数量限定符
字符 含义 举例

? 紧跟在它前面的单元 [0-9]?\.[0-9] 匹配0.0 、2.3 、.5 等,由于.在正则表达

+ 紧跟在它前面的单元 [a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-

                    应匹配零次或一次 应匹配一次或多次 ]+ 匹配email地址
* 紧跟在它前面的单元 zA-Z_]+[a-zA-Z_0-9]* 匹配C语言的标识符
                    应匹配零次或多次
{N} 紧跟在它前面的单元
                      应精确匹配N次
式中是一个特殊字符,所以需要用\转义一下,取字面


{N,} 应匹配至少N次
{,M} 紧跟在它前面的单元
                      应匹配最多M次
{N,M} 紧跟在它前面的单元
                       应匹配至少N次,最
                                      多M次
表 32.3. 位置限定符
字符 含义 举例
^ 匹配行首的位置 ^Content 匹配位于一行开头的Content
$ 匹配行末的位置
;$ 匹配位于一行结尾的;号,^$ 匹配空行
\< 匹配单词开头的位置
\<th 匹配... this ,但不匹配ethernet 、tenth
\> 匹配单词结尾的位置
p\> 匹配leap ... ,但不匹配parent、sleepy
\b 匹配单词开头或结尾的位置
\bat\b匹配... at ... ,但不匹
           配cat 、atexit、batch
\B 匹配非单词开头和结尾的位 \Bat\B匹配battery,但不匹配... attend、hat
                                          ...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值