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

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

量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正則表達式(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. 使用CoreLocation进行定位(Swift版)

    在应用开发中,很多情况需要我们获取到当前的位置和高度信息,方便搜索周边,查看周边相同应用等,一切与定位有关的都得使用CoreLocation库,而且,系统是不允许第三发定位的,当然可以使用第三方对其封 ...

  2. xctf --Hctf2014 Quals write up

    描述 猫流大大发现一个女神,你能告诉我女神的名字么(名字即是flag) nvshen.zip Solution: Extract the file and we could find a txt wh ...

  3. https总结

    http与https不能互相发送ajax请求,因为跨域了. http页面请求https静态资源可以,但是https请求http静态资源会提示错误. 总之,宽松的可以请求严格的,但是严格的不能请求宽松的 ...

  4. js确保正确this的几种写法

    1.直接用bind调用 this.method.bind(this) 2.构造函数中用bind定义 class Foo{ constructor(){ this.method = this.metho ...

  5. 洛谷P2866 [USACO06NOV]糟糕的一天Bad Hair Day

    P2866 [USACO06NOV]糟糕的一天Bad Hair Day 75通过 153提交 题目提供者洛谷OnlineJudge 标签USACO2006云端 难度普及/提高- 时空限制1s / 12 ...

  6. react 基础语法复习2- react入门以及JSX

    引入 react 以及 ReactDom import React from 'react'; import ReactDOM from 'react-dom'; 将react组件渲染到真实dom节点 ...

  7. group by having执行顺序

    原文发布时间为:2009-07-28 -- 来源于本人的百度文章 [由搬家工具导入] 核心原理 where>group>having>order by 只有深入理解这些语句执行的过程 ...

  8. 解决Spring在线程中注入为空指针的问题

    在启用线程中使用来jdbcTemplate来查询数据库,引入jdbcTemplate是用Spring  @Autowired注解  方式引入,但是在运行中 jdbcTemplate 总是 空指针 解决 ...

  9. ubuntu16.04安装docker CE

    如需开始在 Ubuntu 上使用 Docker CE,请确保您满足先决条件,然后再安装 Docker. 如需安装 Docker 企业版 (Docker EE),请转至获取适用于 Ubuntu 的 Do ...

  10. (2)JavaScript基础2

    一.操作符 1.一元操作符 自加自减操作符 前置型 执行前置递增和递减操作时,变量的值都是在语句被求值以前改变的 var num1 = 2; var num2 = 20; var num3 = --n ...