正则表达式的概念和用法

概念

正则表达式是对字符串操作的一种逻辑表达方式,很多情况下我们需要在茫众多的文件中找到我们需要的文件时,就需要用到正则表达式了

正则表达式就如同一个过滤器,能够筛选出希望得到的字符串。它可以检索、替换符合我们自己规定格式的所有文本。

  • 正则表达式分两类

    • 基本正则表达式
    • 扩展正则表达式

正则表达式的用法和选项

在Linux中,正则表达式通常会配合文本过滤工具grep使用。

  • grep的功能强大,且简单粗暴。

正则表达式的概念和用法 

正则表达式的概念和用法

以/etc目录为例

我们用grep来筛选一下其中含有”li”的文件

 

正则表达式的概念和用法

这是利用grep在/etc中对字母”li”进行筛选

如果我们只想要以”li”为首字母的文件要怎么做呢?
这就需要用到正则表达式了

正则表达式的概念和用法

可以看到依靠正则表达式能很轻松的达到我们想要的结果。

正则表达式还有更多更强大的功能,让我们来了解一下吧。

  • 正则表达式
    正则表达式的元字符分类:匹配字符、匹配字数、位置锚定、分组

    • 字符匹配:

      匹配任意单个字符
      []              匹配指定范围内的任意单个字符
      [^]             匹配指定范围外的任意单个字符
      [[:alnum:]]     字母和数字
      [[:alpha:]]     代表任何英文大小写字符,亦即 A-Z, a-z
      [[:lower:]]     小写字母 
      [[:upper:]]     大写字母
      [[:blank:]]     空白字符(空格和制表符) 
      [[:digit:]]     十进制数字
      [[:xdigit:]]    十六进制数字
      [[:graph:]]     可打印的非空白字符
      [[:print:]]     可打印字符
      [[:punct:]]     标点符号
    • 正则表达式的概念和用法

      正则表达式的概念和用法

     

    • 匹配字数(””为转译符,防止系统将某些字符当命令处理)

      \*      匹配前面的字符任意次,包括0次
      
      \+      匹配前面的字符1次以上,不包括0次
      
      *?      匹配前面任意次,但尽可能少重复
      
      .*      任意长度的任意字符
      
      \?      匹配其前面的字符0或1次
      
      \+      匹配其前面的字符至少1次
      
      \{n\}   匹配前面的字符n次
      
      \{m,n\} 匹配前面的字符至少m次,至多n次
      
      \{,n\}  匹配前面的字符至多n次
      
      \{n,\}  匹配前面的字符至少n次
    • 正则表达式的概念和用法

      正则表达式的概念和用法

    • 位置锚定 :

      ^   行首锚定,用于模式的最左侧
      
      $   行尾锚定,用于模式的最右侧
      
      \< 或 \b     词首锚定,用于单词模式的左侧
      
      \> 或 \b     词尾锚定;用于单词模式的右侧
      
      \<PATTERN\> 匹配整个单词
    • 分组

      分组 : \(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如 : \(root\)+

      后向引用 : 引用前面的分组括号中的模式所匹配字符,而非模式本身

      或者 : \|

    • 正则表达式的概念和用法

  • 扩展正则表达式
    扩展正则表达式是正则表达式的优化版,元字符的表达更简洁,更方便。
    在grep中需要加选项 “-e” 来启用扩展正则表达式或egrep(=grep -e)

    • 在字符匹配中的双中括号在扩展正则表达式中可以简写为一个

      [ : alnum : ]   字母和数字
      [ : alpha : ]   代表任何英文大小写字符,亦即 A-Z, a-z
      [ : lower : ]   小写字母 
      [ : upper : ]   大写字母
      [ : blank : ]   空白字符(空格和制表符) 
      [ : digit : ]   十进制数字
      [ : xdigit : ]  十六进制数字
      [ : graph : ]   可打印的非空白字符
      [ : print : ]   可打印字符
      [ : punct : ]   标点符号
    • 大部分转译符(\)可以省略

      *: 匹配前面字符任意次
      
      ? : 0或1次
      
      +: 1次或多次
      
      {m} : 匹配m次
      
      {m,n} : 至少m,至多n次
      
      a|b : a或b
      
      C|cat : C或cat
      
      (C|c)at : Cat或cat

总结

正则表达式的功能很强大且很好用,理解上也可能对于字符表达的含义会有些混乱需要多用多记才能熟练掌握。

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

(0)
kstg5663294kstg5663294
上一篇 2017-06-10 15:49
下一篇 2017-06-11 12:28

相关推荐

  • 误删除libc.so.6时,该怎么恢复

           一周一周光阴似流水,转瞬即逝,又到了该说点什么的时候了。这周老师给我们出了一道实验题,内容是当你不小心误删除了libc.so.6这个库文件时,怎么恢复。意不意外?惊不惊喜?那下面就来简单说说(呃……为什么不是详细说说呢,因为这个这个水平有限,也只能是理解多少,给…

    2017-08-11
  • MySQL管理应用入门(一)

    什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。 在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。 例如, 企业或事业单位的人事部…

    Linux干货 2017-07-08
  • LAMP 编译安装基于2.4

    一 安装前准备 说明:     操作系统:CentOS 6.7 64位     MySQL数据库版本:mariadb-5.5.48-linux-x86_64.tar.gz     Apache 版本:httpd-2.4.12.tar.bz2…

    Linux干货 2016-11-21
  • Linux基础知识

    一、描述计算机的组成及其功能 计算机由运算器、控制器、存储器、I/O设备五大部件组成。 运算器和控制器统称为中央处理器,俗称CPU。    1、运算器:实现算术运算和逻辑运算的部件;    2、控制器:计算机的指挥系统,控制计算机的其他部件,使得个部件有条不紊地协调工作;    3、存储器:存储数据…

    2017-07-08
  • Mariadb数据库复制系列(二):主主复制

       实验二:MySQL双主复制架构的实现 双主的实现方式与主/从类似,仅是两个主机即使主节点,又是对方的从节点双主模型容易造成数据的不一致性,因此要慎用! 1、实验环境 2、在两个节点上安装mariadb-server服务 3、修改两个节点的服务器配置文件 4、两个节点上各自启动服务,各授权一个具有复制权限的用户 5、查看两个节点的二进制日志的状态 6、在…

    Linux干货 2016-11-24
  • N22-第一周博客作业

    1、计算机的组成和及其功能? 计算机由硬件,操作系统,软件三大部分组成。 硬件: 计算机系统中所使用的电子线路和物理设备,主要由中央处理器( CPU )、存储器、外部设备(输入输出设备、I/O设备)及总线等组成。 a、中央处理器(CPU)的主要功能是根据存储器内的程序 ,逐条地执行程序所指定的操作。中央处理器的主要组成部分是:数据寄存器、指令寄存器、指令译码…

    Linux干货 2016-08-15