正则表达式

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

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

     字符匹配

     . : 匹配任意单个字符

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

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

    [: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文件系统(ext2\ext3\ext4,xfs,btrfs…)的介绍[转载]

    ext2\ext3\ext4,xfs,btrfs 都是针对服务器系统越来越高效实用的日志文件系统 日志文件系统:    日志文件系统是一种即使在断电或者是操作系统崩溃的情况下保证文件系统一致性的途径。XFS对文件系统元数据提供了日志支持。当文件系统更新时,元数据会在实际的磁盘块被更新之前顺序写入日志。XFS的日志被保存在磁盘块的…

    Linux干货 2017-01-31
  • useradd命令

    useradd创建用户 使用格式: useradd[options] LOGIN -c:备注信息保存在passwd的备注栏中。 -d:用户登入时的主目录 -e:账号的失效日期,缺省表示永久有效。 -f:密码过期后多少天关闭该账号。 -g:用户所属组。 -G:用户所属的附加群组。 -m:自动创建用户的登入目录。 -M:不要自动创建用户的登入目录。 -n:取消创…

    Linux干货 2017-12-20
  • 马哥教育网络班21期+第5周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@centos ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf  root (hd0,0) kernel /vmlinuz-2.6.3…

    Linux干货 2016-07-29
  • 磁盘和文件系统管理述

        我们知道一块磁盘是可以被分区成多个分区的(partition),以Windows的观点来看,你可能会有一颗磁盘并且将他分区成为C:, D:, E:盘,那个C, D,E就是分区。Linux的设备都是以文件的型态存在,磁盘设备接口的不同也早就了磁盘文件名的不同。即IDE接口的磁盘设备文件名都是/dev/hd[a-z…

    Linux干货 2016-08-29
  • 17 正则表达式及作业

    17 正则表达式及作业     因为正则表达式类型较多且比较重要,因此单独拿出一篇进行陈述。 正则表达式是各种文本处理工具的基础,也是shell编程必须牢牢掌握的知识,其重要性不言而喻。 一、杂项知识整理 1、一个[:space:]包括一个tab。 2、区分好文件名通配(globing)和文件内容通配(正则表达式)。 …

    Linux干货 2016-08-05
  • rpm程序包管理器

    linux程序包管理器: 协作用户管理应用程序:安装、升级、查询、校验、卸载等 软件程序包生成过程:     源代码——》目标二进制格式–》组织成为一个或有限几个包文件     源代码:程序员写好的纯文本文档格式的代码     …

    Linux干货 2016-08-19