grep
正则表达式规则: ^     行首定位符,表示从行首开始进行模式匹配
.     一个非换行符的字符
[ ]    匹配属于此集合的任意一个字符
[^ ]    匹配不属于此集合的任意一个字符
[a-z]   (其指定的集合包含从a到z的所有小写字母,)
\     转义控制符,用来转义元字符或者转义普通字符
\(...\) 标记此模式为一个分组
\<    单词首位定位符,单词的定义为: [A-Za-z0-9_]+
\>    单词末尾定位符
x\{m\} 字符x重复匹配m次
x\{m,\} 字符x至少重复匹配m次,贪婪匹配原则
x\{m,n\} 字符x重复匹配m次至n次,贪婪匹配原则
*     等价于 \{,\}
\|    匹配条件或
$     行尾定位符

练习:写一个正则表达式模式可用来匹配标准ipv4地址,形如0-255.0-255.0-255.0-255

解:

-255可分解如下:
-   [-]
-  [-][-]
- [-]{}
- [-][-]
- [-]

使用'或'合并得到:

\([-]\|[-][-]\|[-]\{\}\|[-][-]\|[-]\)

整理,易得:

\<\(\([-]\|[-][-]\|[-]\{\}\|[-][-]\|[-]\)\.\([-]\|[-][-]\|[-]\{\}\|[-][-]\|[-]\)\.\([-]\|[-][-]\|[-]\{\}\|[-][-]\|[-]\)\.\([-]\|[-][-]\|[-]\{\}\|[-][-]\|[-]\)\)\>

运行结果:

egrep
扩展正则表达式规则: ^     行首定位符,表示从行首开始进行模式匹配
.     一个非换行符的字符
[ ]    匹配属于此集合的任意一个字符
[^ ]   匹配不属于此集合的任意一个字符
[a-z] (其指定的集合包含从a到z的所有小写字母,)
\     转义控制符,用来转义元字符或者转义普通字符
(...)   标记此模式为一个分组
\<     单词首位定位符,单词的定义为: [A-Za-z0-9_]+
\>     单词末尾定位符
x{m}   字符x重复匹配m次
x{m,} 字符x至少重复匹配m次,贪婪匹配原则
x{m,n} 字符x重复匹配m次至n次,贪婪匹配原则
*     等价于 {,}
?     等价于 {,}
+     等价于 {,}
|     匹配条件或
$     行尾定位符

由此易看出,扩展正则表达式与正则表达式之间的根本区别为,其增大了元字符的集合范围,增加的元字符有:

+ ? | { } ( )

这使得模式表现的更加简洁。

练习:写一个扩展正则表达式模式可用来匹配标准ipv4地址,形如0-255.0-255.0-255.0-255
解:

0-255可分解如下:
0-   [-]
-  [-][-]
- [-]{}
- [-][-]
- [-]

使用'或'合并得到:

([-]|[-][-]|[-]{}|[-][-]|[-])

整理,易得:

\<(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\>

运行结果:

附录:

//grep options
-?
  同时显示匹配行上下的?行,如:grep - pattern filename同时显示匹配行的上下2行。
-b,--byte-offset
  打印匹配行前面打印该行所在的块号码。
-c,--count
  只打印匹配的行数,不显示匹配的内容。
-f File,--file=File
  从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。
-h,--no-filename
  当搜索多个文件时,不显示匹配文件名前缀。
-i,--ignore-case
  忽略大小写差别。
-q,--quiet
  取消显示,只返回退出状态。0则表示找到了匹配的行。
-l,--files-with-matches
  打印匹配模板的文件清单。
-L,--files-without-match
  打印不匹配模板的文件清单。
-n,--line-number
  在匹配的行前面打印行号。
-s,--silent
  不显示关于不存在或者无法读取文件的错误信息。
-v,--revert-match
  反检索,只显示不匹配的行。
-w,--word-regexp
  如果被\<和\>引用,就把表达式做为一个单词搜索。

正则表达式RE与扩展正则表达式ERE——grep与egrep的更多相关文章

  1. grep和egrep正则表达式

    Linux上文本处理三剑客 grep :文本过滤( 模式:pattern) 工具 grep, egrep, fgrep (不支持正则表达式搜索,但搜索纯文本的数据最快) sed :stream edi ...

  2. Shell基本正则表达式和扩展正则表达式

    BRE和ERE的区别 基本正则表达式(BRE)和扩展正则表达式(ERE)的区别仅仅是元字符(meta charactor)的区别而已. BRE: 只有^$.*[]是元字符 ERE: ^$.[]*+() ...

  3. Linux三剑客之grep 与 egrep

    grep: Linux上文本处理三剑客 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep) sed:stream editor,文本编辑工具: awk:Lin ...

  4. bash基础——grep、基本正则表达式、扩展正则表达式、fgrep

    grep grep全称:Globally search a Regular Expression and Print 全局搜索正则表达式 正规表达式本质上是一种"表示方法", 只要 ...

  5. Linux通配符与基础正则表达式、扩展正则表达式

    在Linux命令行操作或者SHELL编程中总是容易混淆一些特殊字符的使用,比如元字符‘*’号,作为通配符匹配文件名时表示0个到无穷多个任意字符.而作为正则表达式匹配字符串时,表示重复0个到无穷多个的前 ...

  6. egrep 及扩展正则表达式

    grep -E 表示支持扩展的正则表达式 grep -E = egrep 一.字符匹配: 扩展模式下的字符匹配与基本正则表达式的字符匹配相同,如: . 表示任意单个字符 [] 表示范围内人任意单个字符 ...

  7. linux正则表达式之-基础正则表达式(基于grep)

    linux正则表达式: 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法,如:假设@代表123456,!代表abcde.通过定义的这些特殊符号的铺助,系统管理员就可以快速的过滤,替换或 ...

  8. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  9. grep与正则表达式,grep、egrep和fgrep

    grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...

随机推荐

  1. quick2.2.6 问题记录

    1.luasocket 不能使用方式 用下面地址的文件替换文件重新编译 https://github.com/chukong/quick-cocos2d-x/blob/master/lib/cocos ...

  2. PCA最小平方误差理论推导

    PCA最小平方误差理论推导 PCA求解其实是寻找最佳投影方向,即多个方向的标准正交基构成一个超平面. 理论思想:在高维空间中,我们实际上是要找到一个d维超平面,使得数据点到这个超平面的距离平方和最小 ...

  3. BZOJ3325 [Scoi2013]密码【Manacher】【构造】【贪心】

    Description Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信 ...

  4. 异步任务中的重新进入(Reentrancy)

    一个按钮,点击执行一个任务.我们可能直接在它的 Click 事件中写下了执行任务的代码. 一般我们无需担心这样的代码会出现什么问题——但是,这样的好事情只对同步任务有效:一旦进入了异步世界,这便是无尽 ...

  5. iOS开发之html解析

    使用XPath解析html 可以从此处https://github.com/topfunky/hpple下载工程,将TFHpple.h,TFHpple.m,TFHppleElement.h,TFHpp ...

  6. HttpMessageConvert

    1. 我们先来看看框架会自动注册哪些httpmessageconvert? 在哪个地方开始注册的? 在对mvc:annotation-driven解析的AnnotationDrivenBeanDefi ...

  7. 网站SEO知识

    http://seo.chinaz.com/ 这是综合查询的 site:www.hr246.com 可以查看百度收录的情况 参照贪玩游戏来搞 http://www.tanwan.com http:// ...

  8. 在一个form中有两个submit,值分别为修改和删除,如何在提交时用js判断submit值为修改还是删除呢

    同一个form里,不管哪个 submit 都是直接提交form表单里的内容. 要达到你的目的,就不能用类型为 submit 的按钮,要用 button,然后加onclick 方法来自定义预处理参数,然 ...

  9. cacti监控linux主机时iptables阻碍了udp161端口造成无法监控解

    由于在添加linux主机时,有防火墙启用,造成无法监控linux主机,现有两种方法解决无法监控linux主机问题:可以通过在监控主机执行该命令: snmpwalk -c public -v 2c 19 ...

  10. Python--线性代数篇

    讲解Python在线性代数中的应用,包括: 一.矩阵创建 先导入Numpy模块,在下文中均采用np代替numpy import numpy as np 矩阵创建有两种方法,一是使用np.mat函数或者 ...