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

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

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

我们以一

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

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

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

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

表达式:

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

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

1.字符类:

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

常见的字符类例如以下:

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

2.数量限定符

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

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

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

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

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

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

3.位置限定符

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

特殊字符:

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

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

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

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

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

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

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

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

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

博客中再介绍。

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

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

shell脚本学习笔记 (正則表達式)的更多相关文章

  1. 【JavaScript】正則表達式

    正則表達式,也不是第一次与它见面了.在我们学习ASP.NET视频的时候,验证控件的那个实例中.就有提到过它. 那个时候.都是在控件的属性中自己设置的,用的原理就是正則表達式,当时得感觉就是方便,强大, ...

  2. 鸟书shell 学习笔记(二) shell中正則表達式相关

    通配符与正則表達式的差别 通配符是bash原生支持的语法,正則表達式是处理字符串的一种表示方式, 正則表達式须要支持的工具支持才干够 语系设置 : export LANG=C grep alias 设 ...

  3. python 学习笔记 10 -- 正則表達式

    零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...

  4. Python学习笔记8:标准库之正則表達式

    Python拥有强大的标准库.从如今起,開始学习标准库中提供的一些经常使用功能. 首先看正則表達式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(pa ...

  5. 轻松学习之Linux教程六 正則表達式具体解释

    本系列文章由@超人爱因斯坦出品.转载请注明出处. 作者:超人爱因斯坦    个人站点:http://www.hpw123.net          文章链接:http://hpw123.net/a/L ...

  6. DOM笔记(十):JavaScript正則表達式

    一.RegExp ECMAScript通过RegExp类型类支持正則表達式,语法和Perl类似: var exp = /pattern/flags; patternb部分是不论什么简单的或复杂的正則表 ...

  7. 黑马程序猿————Java基础日常笔记---反射与正則表達式

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序猿----Java基础日常笔记---反射与正則表達式 1.1反射 反射的理解和作用: 首 ...

  8. jQuery源代码学习:经常使用正則表達式

    转载自:http://nuysoft.iteye.com/blog/1217898 经常使用的数字正则(严格匹配) 正则 含义 ^[1-9]\d*$ 匹配正整数 ^-[1-9]\d*$ 匹配负整数 ^ ...

  9. linux系统之shell编程-正則表達式

    shell编程正則表達式: 1:元字符   [ ]  .   *  ? + ( )  |  {  }  ^  $ 2 : [a-z0-9]  表示匹配随意数字和字母的一个 3 :  [^a-z]    ...

随机推荐

  1. HDU 1043 & POJ 1077 Eight(康托展开+BFS | IDA*)

    Eight Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30176   Accepted: 13119   Special ...

  2. POJ3207 Ikki's Story IV - Panda's Trick 【2-sat】

    题目 liympanda, one of Ikki's friend, likes playing games with Ikki. Today after minesweeping with Ikk ...

  3. Codeforces Round #316 (Div. 2) C 思路/模拟

    C. Replacement time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  4. Flask request获取参数问题

    https://www.jianshu.com/p/ecd97b1c21c1 https://blog.csdn.net/lovebyz/article/details/52244330 https: ...

  5. mongodb使用1

    首先官网下载mongodb放在根目录下.新建db文件夹,在命令行中进入bin路径,然后运行mongod开启命令,同时用--dbpath指定数据存放地点为“db”文件夹 mongod --dbpath= ...

  6. 【02】react 之 jsx

    React与ReactDOM是react中核心对象,React为核心功能,ReactDOM提供对DOM的操作,以前的老版本中只有React没有ReactDOM,新版本中分离出ReactDOM提供两种渲 ...

  7. Cannot map 'XXXController.Create' bean method

    [转 :http://www.fanfanyu.cn/news/staticpagefile/2351.html] 最近在开发项目的过程中SpringMVC抛了个"Ambiguous map ...

  8. 【BZOJ4476&JSOI2015】送礼物(二分,RMQ)

    ANS明显是有二分性的 二分答案,设二分值为b M(i,j)−m(i,j)j−i+k>b 显然当l<长度<r时,一端是最小值,一端是最大值. 等于l或r的时候因为可能不满足以上性质, ...

  9. BootLoader的一些知识

    在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境.在嵌入 ...

  10. 获取当前应用程序实例(instance:HINSTANCE)(转)

    if using MFC AfxGetInstanceHandle(). For console programs, call GetConsoleWindow() to get the HWND t ...