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

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

量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正則表達式(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. java中的读/写锁

    读写锁接口:ReadWriteLock,它的具体实现类为:ReentrantReadWriteLock 使用场景: 对于一个资源,读读能共存,读写不能共存,写写不能共存. 锁降级:从写锁变成读锁: 锁 ...

  2. ubuntu--基础环境瞎搞集合

    安装ubuntu系统后有很多东西需要自己瞎搞一下,这里把一些瞎搞的过程记录在这里,方便以后重新装系统后重新配置. 一.安装. 可以在windows下制作启动盘(软碟通),然后开机u盘启动即可安装,预留 ...

  3. react 当中当组件抛出的dom元素最外层不止一个的时候的写法

    在react16当中,对一个组件抛出多个dom进行了支持,写法 以数组形式抛出

  4. 解决ie8下页面刚出现时候的晃动问题

    出现这个问题的原因的页面的高度超过一屏,这个时候需要在开始的时候给 html,body {overflow:scroll;overflow-x:hidden}; 这样就可以解决这个问题了

  5. rpm包安装mysql5.6.*版本

    1.查看是否已经安装Mysql rpm -qa | grep -i mysql #删除已经安装的Mysql程序 rpm -ev *****.rpm 2.检查是否还有残留mysql文件夹 find / ...

  6. C#.NET中使用存储过程的方法及其优点

    原文发布时间为:2008-09-26 -- 来源于本人的百度文章 [由搬家工具导入] 一.使用存储过程的优点    作为服务器端的代码,存储过程具有以下优点:1) 存储过程是预先编译过的,是执行查询或 ...

  7. [LeetCode] Add Two Numbers 链表

    You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...

  8. 【C/C++】快速排序的两种实现思路

    方法一:不断填坑,一次确定一个值.http://blog.csdn.net/morewindows/article/details/6684558 #include<stdio.h> vo ...

  9. java编码,乱码问题详解

    一.常见的编码格式 1.ASCII 基础编码,英文和西欧字符. 用一个字节的低7位表示,一共128个. 0~13是控制字符如换行.回车.删除等,32~126是打印字符,键盘输入. 2.IOS-8859 ...

  10. 线程之间通信 等待(wait)和通知(notify)

    线程通信概念: 线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程之间的通信就成为整体的必用方式之一.当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同 ...