正则表达式

     正则表达式是由一类特殊字符所编写的模式,通过这些字符的使用,我们能检索 查找文本中符合某些规则的内容。

正则表达式元字符的分类有:字符匹配,匹配次数,位置锚定,分组等。

     字符匹配

     . : 匹配任意单个字符

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

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

    [:alnum:] 数字和字符

   [:alpha:] 英文大小写字符 a-z A-Z
   [:lower:] 小写字母
   [ :upper:] 大写字母
   [:space:] 专门匹配空格

 注意:这几个使用频率相对较高。


   [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
  [:digit:] 十进制数字 [:xdigit:]十六进制数字
  [:graph:] 可打印的非空白字符
  [:print:] 可打印字符
  [:punct:] 标点符号

 注意:这几个使用频率相对较低。

   匹配次数

* 匹配前面的字符任意次,0 到无穷
.* 任意字符出现任意次,比如说 123 456 abc (这个使用频率很高,很重要)
a* a字符出现任意次   aaaa aa
[[:lower:]]* 任意小写字母出现任意次
\? 匹配前面的字符出现0次或者1次  
a\? 出现0次或者1次
\+ 匹配前面的字符至少1次  
    a\+ a至少出现1次
\{n\} 前面的字符出现n次 
   [0-9]\{3\} 000-999

\{m,n\}匹配前面的字符出现m到n次,m,n是一个范围
  [0-9]\{1,3\} 0-999
\{,n\}匹配前面的字符最多出现n
   [0-9]\{,3\} 最大匹配是999
 \{m,\}匹配前的字符至少出现m次
   [0-9]\{3,\} 000 无穷


     位置锚定
      ^ 锚定行首
      $ 锚定行尾
     ^$ 匹配空行的
     ^[[:space:]] 行首是空白的字符
     ^[[:space:]]*$ 也是 空行
     ^a  以a开头的行
     b$  以b结束的行
     ^a.*b$ 以a开头 中间任意字符 以b结尾的行
     ^a.*[[:space:]]\{3\}.*b$ a开头跟任意字符,中间出现三次空格再跟任意字符 以b结尾的行
     ^# 以#开头的行
     例子:cat /etc/profile | grep -v “^#” | grep -v “^$”
      例子: cat /etc/httpd/conf/httpd.conf  | grep -v “^#” | grep -v “^$” 

    \b  \b 匹配词首和词尾 
   \<  \> 匹配词首和词尾
   例子: \broot\b  \<root\>  锚定root这个单词,不会匹配例如root123之类的单词


      分组 
 将匹配规则分成不同的组 使用 1 2 3..等数字去标识,便于后面使用同样规则的时候可以直接饮用
   \(root\)\+\1 注意:这种使用方法比较常用

   \(string1\+\(string2\)*\) 
   \1  string1\+\(string2\)*
   \2  string2

 或者 |
  a \| b
  C \| cat

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

(0)
fsyfsy
上一篇 2017-04-06 19:27
下一篇 2017-04-06 21:49

相关推荐

  • linux命令格式及基础命令

    linux命令格式及基础命令介绍 命令格式 command [options] [arguments] * command:命令 * options: –单词 或 -单字 * argument:参数(档案名称或其他) 基础命令介绍 ifconfig 用于显示或设置网络设备 语法 ifconfig [网络设备][down up -allmulti -arp …

    Linux干货 2017-12-03
  • 加油吧!少年!—至我和我M25期的伙伴

    引用 衣带渐宽终不悔,为伊消得人憔悴。—王国维《人间词话》 转眼已到了27岁的年纪,不知道自己是否还称得上少年。公交上让座被小朋友成为叔叔也都是很多年的事了。哪怕再有一颗少年心现在也要肩负起整个家庭的责任。 从毕业已工作了将近六个年头,无聊的工作平凡的薪水已经使我厌倦。闭上眼睛以后需要赡养四个老人,还要照顾孩子以后这些难题映入脑海。曾经以为遥远的…

    Linux干货 2017-07-11
  • shell脚本编写-4

    1、while 循环的特殊用法(遍历文件的每一行) while read line; do 循环体 done < /PATH/FROM/SOMEFILE 依次读取/PATH/FROM/SOMEFILE 文件中的每一行,且将行赋值给变量line 练习:扫描/etc/passwd 文件每一行,如发现GECOS 字段为空,则填充用户名和单位电话为629856…

    Linux干货 2016-09-01
  • linux中for的用法

    关于linuxbash shell中的for语句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循环命令,今天就介绍一下关于for的一些用法。文中任何错误希望大佬们一一指出,不胜感激。 bashshell中提供了for命令,用于创建通过一系列值重复的循环,每次重复使用系列中的一个值执行一个定义的命令…

    2017-07-15
  • 一个开发眼中的运维

    在云计算时代,开发和运维的结合变得越来越重要。在DIFF论坛第一期,前新浪SAE运维主管,郑志勇,分享了《一个开发眼中的运维》根据自己从开发人员转型运维之后的心得,谈如何把在开发上的运用抽象思维方式运用到运维领域。 1. 运维不是什么? 运维不是打杂的,运维不是客服,运维也不是服务开发的,但要做好合作。 2. 运维是什么? 运维服务于整个产品,保证架构合理,…

    Linux干货 2015-03-11
  • 基于key验证和一些自动化运维工具

    pssh pscp.pssh Pslurp.pssh AIDE等

    2018-01-16