首页 > 代码库 > shell脚本学习笔记 (正則表達式)

shell脚本学习笔记 (正則表達式)

         正則表達式一般有三个部分组成,他们各自是:字符类数量限定符位置限定符。

规定一些特殊语法表示字符类、数

量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正則表達式(Regular Expression)。

我们以一

个样例開始吧。假如给你一个文件,里面存放的是IP地址,可是有一些不是合格的。请你找出合格的IP地址。我想不知道正

则表达式的人一定会认为好陌生,我拿一个循环去实现,我之前也被问到过这个问题,也是想着拿循环来完毕。写出一个函

数来实现这个查找功能实在是不简单。并且不能保证正确性。

这时候正是正則表達式登场的时候了。以下是我写的一个正则

表达式:

      技术分享

      此时此刻是不是认为挺奇妙的。我当时也感觉到了,上面的五个“IP”地址中。仅仅有一个满足要求的,我们一条

命令就找出来了,是不是顿时被吸引住了。那么我们開始正則表達式的探讨吧。

1.字符类:

       它们在模式中表示一个字符,可是取值范围是一类字符中的随意一个。

常见的字符类例如以下:

技术分享

        我写了一些简单的代码来验证上述字符类

        技术分享

       技术分享


2.数量限定符

      数量限定符指明字符类出现的次数,以帮助模式匹配,常见的数量限定符例如以下:  

技术分享

    我写的測试代码例如以下:

      技术分享

     我的使用的是centos,不知道细心的你发现没有。有一条语法不支持即:{ ,M}。

Z这个在别的linux上是能够的。

比方ubantu,我想这个问题应该是不同平台的差异导致的吧。

我在同学的ubantu平台下測试了是能够的,这点能够保证。


3.位置限定符

     顾名思义位置限定符使用限定字符类的位置的。比方我们还是拿IP地址来说吧。IP地址分为四个部分。每两个部分之间

拿 ‘.‘ 隔开,而每一部分都能够拿字符类和数量限定符描写叙述。

     技术分享  

     技术分享

     技术分享

  

特殊字符:

     1. \   该字符用于转移,上面的样例中使用到 ‘.‘ 的时候都要用 ‘\‘ 转移一下,否则无法被解释

      2. |    ‘|‘ 可用于连接两个 字表达式

      3. ()   ‘()‘可将莫一部分作为一个总体,然后我们能够对总体进行操作

      技术分享

      技术分享

       到这里正则表达的语法基本上讲完了,以下对以上事例中使用到的工具进行简单的介绍,grep工具相信大家都知道

吧,linux平台下的自带的工具,对grep的介绍我引用搜狗百科的介绍:grep是一种强大的文本搜索工具。它能使用正

则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包含grep、egrep和fgrep

利用这些返回值就可进行一

些自己主动化的文本处理工作。 我在上面的样例中使用的是egrep工具。是grep的扩展,这个工具的很多其它使用方法以及上面介绍

的一些不充分的地方大家能够去百科上查找一下,事实上另一些更高级的工具也是支持这则表达式的。我将在结下来的

博客中再介绍。

     我个人认为死记这些这些字符的意思是不恰当的。我们应该通过不断的练习来学习正則表達式,这样才干达到好的效

果。忘记的时候我们能够去看一看这些正則表達式的模块的用处,最后希望对大家有一些帮助。

shell脚本学习笔记 (正則表達式)