正则表达式

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

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

     字符匹配

     . : 匹配任意单个字符

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

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

    [: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干货 2016-10-30
  • Linux网络管理

                          Linux网络管理   本章内容: 网络概念 OSI七层模型 网络设备 TCP/IP IP地址 配置网络 实现网络组 测试网络 网络工具   网络用户应用程序: WEB浏览器(…

    系统运维 2016-09-12
  • 8.1作业

    8月1日作业 创建testuser uid 1234,主组:bin,辅助组:root,ftp,shell:/bin/csh home:/testdir/testuser [root@localhost ~]# useradd -u 1234 -g bin -G root,ftp&…

    Linux干货 2016-08-04
  • Linux的发展史

    Linux的诞生 1987年荷兰阿姆斯特丹Vrije大学的Andrew S.Tanenbaum 教授为了让学生们更了解操作系统而参照Unix系统编写了Minix系统。在1988年芬兰赫尔辛基大学迎来了一位新生Linus Benedict Torvalds ,他在学习了Minix系统后,以此为平台和指导开发出了Linux。在1991年8月Linus Toval…

    Linux干货 2016-10-19
  • Nginx的编译安装

    nginx.html Nginx的编译安装 一、Nginx的特点 二、获取并编译Nginx 三、配置主页面 四、配置编译文件时的选项及模块 一、Nginx的特点 1、Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核 Poll 模型,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。 2、Nginx 具…

    Linux干货 2016-03-20
  • Linux基础——文件管理

    Linux基础——文件管理 文件管理及常用命令详解       Linux文件系统是以/为基本的倒置树状结构,我们来进一步学习下文件或者目录的操作和管理命令:  目录相关操作:cd、pwd、mkdir、rmdir 目录及文件检索:ls 复制、移动、删除:cp、mv、rm…

    Linux干货 2016-09-27