Linux环境下常用regexp的使用
正则表达式
REGular EXPression 的简写
元字符
匹配次数
位置锚定
分组
--------------------------------------
元字符
. 匹配任意单个字符
[] 匹配指定范围内任意单个字符
[^] 匹配指定范围外的
[:space:] 空白字符
[:punct:] 标点字符
[:lower:] 小写字母
[:upper:] 大写字母
[:alpha:] 大小写字母
[:digit:] 数字
[:alnum:] 数字和大小写字母
匹配次数(贪婪模式)
* 匹配其前面的字符任意次
a*b b前面a出现任意次数
a.*b a开头b结束
.* 任意长度任意字符
\? 匹配其前面的字符1次或0次 意思是这个字符可有可无
a?b
\{m,n\} 匹配其前面的字符至少m次 至多n次
\{1,\} 至少一次
\{,3\} 至多3次
a.\{1,3\}b a和b之间至少有一个最多有三个字符
位置锚定:
^ 锚定行首 此字符后面的任意内容必须出现在行首
$ 锚定行尾 此字符前面的任意内容必须出现在行尾
grep 'b..h$' /etc/passwd
^$ 空白行
\< 其后面的任意字符必须作为单词首部出现
\> 其前面的任意字符必须作为单词尾部出现 \b这个符号的另一种写法
分组
\(\)
\(ab\)* ab 可以出现任意次
\1 第一个左括号以及与之对应的组内容
grep '\(l..e\).*\1' test3.txt
练习: 分析/etc/inittab 文件中如下文本中前两行的特征(每一行中出现在数字必须相同)请写出可以精确找到类似两行的模式
11:1:wait:/etc/rc.d/rc 1
13:1:wait:/etc/rc.d/rc 3
grep '^1\([0-9]\):\1.*\1$' /etc/inittab
grep 使用基本正则表达式定义的模式来过滤文本的命令
----------------------------------------------------
扩展正则表达式
字符匹配
. [] [^]
次数匹配
*
? 无需反斜杠了
+ 匹配其前面的字符至少一次 \{1,\}
{m,n} 不需要反斜线
位置锚定
^
$
\<
\>
分组
() 不用反斜杠
\1,\2
或者
a|b or的意思
C|cat 整个左边和右边
Cat或者cat 错
C或者cat 对
grep -E 'C|cat' text.txx
{3}重复三次
fgrep 不支持正则表达式 特别快
最新文章
- DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(1)
- Qt中让Qwidget置顶的方法
- Linux基于libmemcached,php扩展memcached的安装
- Stream语法详解
- JDBC 学习笔记(四)—— 自定义JDBC框架+Apache—DBUtils框架+事务管理+操作多表
- Django 学习笔记之一 环境搭建
- Java [Leetcode 225]Implement Stack using Queues
- C# 常用日期类型转换帮助类
- 前端 - 使用gulp搭建es6运行环境
- C++类型转换总结
- linux安装xunsearch
- QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)
- S2SH框架整合(注解)Struts2+Spring+Hibernate+MySql
- 关于AngularJS学习整理---浅谈$scope(作用域) 新手必备!
- 一个比ack速度快n倍的代码搜索工具: ag
- MVP之高级MVP架构封装
- Spring Boot实战
- MySQL之库、表操作
- kdevelop 添加对 C++11的支持
- Zookeeper单机安装部署与配置(二)