码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式及工具

时间:2016-06-24 16:18:57      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:正则表达式

    前言:正则表达式,又称正规表示法、常规表示法。(Regular Expression):正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言(PHPC#、Java、C++、Objective-c、Swift、VB、JavascriptRuby以及Python)都支持利用正则表达式进行字符串操作。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。

    简单来说:正则表达式可以理解为通过描述某种规则达到某种模式匹配,这种规则称为正则表达式。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

    1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);

    2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

正则表达式的特点是:

    1. 灵活性、逻辑性和功能性非常的强;

    2. 可以迅速地用极简单的方式达到字符串的复杂控制。

    3. 对于刚接触的人来说,比较晦涩难懂。

正则表达式由一些普通字符和一些元子符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。eg:在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式"testing"中没有包含任何元字符,它可以匹配"testing"和"testing123"等字符串,但是不能匹配"Testing"。(未包含元子符)

一个正则表达式由三部分组成:字符类(描述字符串包含字符特点),数量限定符(字符串中相应字符个数),位置限定符(字符串中字符位置特点)。

规定一些特殊语法表示字符类、数量限定符和位置关系,然后将这些特殊语法和普通字符一起表示一个模式,这就是正则表达式(Regular Expression)。 

技术分享

技术分享

技术分享

技术分享

注:注意正则表达式参数用单引号括起来了,因为正则表达式中用到的很多特殊字符在Shell也有特殊 含义(例如\),只有用单引号括起来才能保证这些字符原封不动地传给grep命令,而会被Shell解释掉。

1.grep:文本过滤工具。它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。正则表达式在grep中用来查找符合模式的字符串,grep找的是包含某个模式的行。

egrep相当于grep -E,表示采用Extended正则表达式语法。 grep的正则表达式有BasicExtended两种规范。二者的区别主要在于对上图中特殊字符的解析


   对于Basic模式来说,字符?+{}|()应解释为普通字符,要表示上述特殊含义则需要加\转义。

   而对于Extend模式来说,字符?+{}|()应解释为特殊字符,要表示普通字面含义则需要加\转义。

技术分享

技术分享

具体例子:

技术分享

技术分享

技术分享

IP地址的合法性判别

技术分享

最终grep匹配合法IP表达式

技术分享

grep 选项测试

技术分享

技术分享


本文出自 “小止” 博客,请务必保留此出处http://10541556.blog.51cto.com/10531556/1792537

正则表达式及工具

标签:正则表达式

原文地址:http://10541556.blog.51cto.com/10531556/1792537

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!