正则表达式RE与扩展正则表达式ERE——grep与egrep
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的更多相关文章
- grep和egrep正则表达式
Linux上文本处理三剑客 grep :文本过滤( 模式:pattern) 工具 grep, egrep, fgrep (不支持正则表达式搜索,但搜索纯文本的数据最快) sed :stream edi ...
- Shell基本正则表达式和扩展正则表达式
BRE和ERE的区别 基本正则表达式(BRE)和扩展正则表达式(ERE)的区别仅仅是元字符(meta charactor)的区别而已. BRE: 只有^$.*[]是元字符 ERE: ^$.[]*+() ...
- Linux三剑客之grep 与 egrep
grep: Linux上文本处理三剑客 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep) sed:stream editor,文本编辑工具: awk:Lin ...
- bash基础——grep、基本正则表达式、扩展正则表达式、fgrep
grep grep全称:Globally search a Regular Expression and Print 全局搜索正则表达式 正规表达式本质上是一种"表示方法", 只要 ...
- Linux通配符与基础正则表达式、扩展正则表达式
在Linux命令行操作或者SHELL编程中总是容易混淆一些特殊字符的使用,比如元字符‘*’号,作为通配符匹配文件名时表示0个到无穷多个任意字符.而作为正则表达式匹配字符串时,表示重复0个到无穷多个的前 ...
- egrep 及扩展正则表达式
grep -E 表示支持扩展的正则表达式 grep -E = egrep 一.字符匹配: 扩展模式下的字符匹配与基本正则表达式的字符匹配相同,如: . 表示任意单个字符 [] 表示范围内人任意单个字符 ...
- linux正则表达式之-基础正则表达式(基于grep)
linux正则表达式: 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法,如:假设@代表123456,!代表abcde.通过定义的这些特殊符号的铺助,系统管理员就可以快速的过滤,替换或 ...
- Linux正则表达式grep与egrep
grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...
- grep与正则表达式,grep、egrep和fgrep
grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...
随机推荐
- BZOJ4832: [Lydsy1704月赛]抵制克苏恩(记忆化&期望)
Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q 同学会告诉你所有相关的细节.炉石传说是这样的一个游戏,每个玩家拥有一个 ...
- HDU - 6397:Character Encoding (组合数&容斥)
题意:T组数据,给次给出N,M,K,多少种方案,用[0,N-1]范围的数,表示一个M排列,其和为K: 思路:隔板法,不限制[0,N-1]的时候答案是C(M+K-1,M-1):那么我们减去至少一个> ...
- BZOJ1017: [JSOI2008]魔兽地图DotR【树形DP】【玄学】
Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Anc ...
- direct2D图片处理
转自:http://blog.csdn.net/augusdi/article/details/9040177 Using Bitmap Brushes Direct2D 中的图片处理增加了很多的灵 ...
- decorator and @property
@property 首先, 它是个装饰器. 其次, 看到这个东西, 意味着它下面的函数可以被当作一个属性(成员变量)来看到. 通常, 这个函数会return点什么东西. 重点讲讲装饰器: 1, py ...
- Kanboard 看板工具配置使用
备注: 类似的开源工具有wekan 界面还有功能和Trello 类似.比较方便 1. 安装(基于docker+ docker-compose) a. 安装docker && ...
- Nchan 实时消息ha 配置
备注: Nchan 的数据持久化,以及ha 都是通过redis实现的,如果要做到无单点可以使用redis cluster 同对于Nchan server 进行多副本 1. 安装 ...
- fatal: The remote end hung up unexpectedly解决办法
$ git config --global http.postBuffer 2428000 git config http.postBuffer 524288000 配置完成后 git pull一下, ...
- 数据双向绑定页面无反应(angularjs)
问题引入 使用 angularjs进行过一段时间的开发后,基本上都会遇到一个这样的坑:页面进行了双向数据绑定,控制层的数据也已经改变了,但是视图层的数据却没有改变. 其实造成这个问题的原因大致分为以下 ...
- (转)Android性能优化——工具篇
Android性能优化是Android开发中经常遇见的一个问题,接下来将对Android性能优化方面的知识点做一个简单的梳理和总结,将从工具和代码两方面进行梳理.所谓工欲善其事必先利其器,本文首先来看 ...