正则表达式

19 篇文章 0 订阅

字符类

字符        含义                                           举例

.             匹配任意一个字符                     abc.可以匹配到 abcd,abc9 等等

[]            匹配括号中的任意一个字符       [abc]d 可以匹配到ad,bd,cd。

-             在[]括号内的字符范围                [1-9a-fA-F]可以匹配到一位16进制的数字

^             在[]括号内的开头,匹配除括号中字符之外的任意字符      比如[^a]1,可以匹配到b1,c1,d1

[[:xxx:]]    grep工具预定义的一些命名字符类  [[:alpha:]]匹配一个字母,[[:digit:]]匹配一个数字

 数量限定类

字符          含义                                                                        举例

?          紧跟在他前面的单元应匹配零次或一次            [0-9]?\.[0-9]匹配0.0,2.3,.5等,由于.在正则表达式中是一个特殊字                                                                                           符所以需要转义一下

+            紧跟在他前面的单元应匹配一次或多次            [a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+ 

*             紧跟在他前面的单元应匹配0次或多次             [0-9][0-9]* 匹配至少一位的数字

{N}          紧跟在他前面的单元精确匹配N次                   [0-9]{2} 匹配从00-99

{N,}         紧跟在他前面的单元至少N次                           [1-9][0-9]{2,}匹配三位以上(含三位)的整数

{,M}      紧跟在他前面的单元应匹配最多M次               [0-9]{,1}等价于[0-9]?

{N,M}      紧跟在他前面的单元应匹配至少N次,最多M次    [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}匹配IP地址

位置限定符

   字符      含义                                                      举例
    ^          匹配行首的位置                                ^Content匹配位于一行开头的Content
    $          匹配行末的位置                                ;$匹配位于一行结尾的;号,^$匹配空行
    \<         匹配单词开头的位置                         \<th匹配... this,但不匹配ethernet、tenth
    \>         匹配单词结尾的位置                         p\>匹配leap ...,但不匹配parent、sleepy
    \b         匹配单词开头或结尾的位置              \bat\b匹配... at ...,但不匹配cat、atexit、batch
    \B         匹配非单词开头和结尾的位置          \Bat\B匹配battery,但不匹配... attend、hat ...

 

位置限定符可以帮助grep更准确地查找,例如我们用[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}查找IP地址,找到这两行

192.168.1.1
1234.234.04.5678

如果用^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$查找,就可以把1234.234.04.5678这一行过滤掉了。

其它特殊字符

字符  含义    举例
\    转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符   普通字符<写成\<表示单词开头的位置,特殊字符.写成\.以及\写成\\就当作普通字符来匹配
()   将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符    ([0-9]{1,3}\.){3}[0-9]{1,3}匹配IP地址
|    连接两个子表达式,表示或的关系     n(o|either)匹配no或neither

以上介绍的是grep正则表达式的Extended规范,Basic规范也有这些语法,只是字符?+{}|()应解释为普通字符,要表示上述特殊含义则需要加\转义。如果用grep而不是egrep,并且不加-E参数,则应该遵照Basic规范来写正则表达式。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值