linux初学习之正则表达式和通配符
2015-12-06 13:37
585 查看
一、正则表达式:
元字符是用来阐释字符表达式意义的字符,简言之,就是用来描述字符的字符。正则表达式RE(Regular Expression)是由一串字符和元字符构成的字符串。
正则表达式的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合。实际上正则表达式完成了数据的过滤,将不满足正则表达式定义的数据拒绝掉,剩下与正则表达式匹配的数据。
基本的正则表达式元字符集合及其意义
符号 | 意义 |
* | 0个或多个在*字符之前的那个普通字符 |
. | 匹配任意字符 |
^ | 匹配行首,或后面字符的非 |
$ | 匹配行尾 |
[] | 匹配字符集合 |
\ | 转义符,屏蔽一个元字符的特殊意义 |
\<\> | 精确匹配符号 |
\{n\} | 匹配前面字符出现n次 P.43 |
\{n,\} | 匹配前面字符至少出现n次 |
\{n,m\} | 匹配前面字符出现n~m次 |
zha*ng :“*”前面的普通字符是a,就表示匹配a字符0次或多次,如:zhng、zhang、zhaaaang
(根据测试可以不包括前面的字符,即匹配0次)
2.匹配空行
匹配行首的^和匹配行尾的$组合起来“^$”可以用来匹配空行,如果需要匹配只包含一个字符的行,可以用“^.$”
3."[]"符号
匹配字符集合,支持穷举方法列出字符集合的所有元素,也支持使用“-”符号表示字符集合范围。
[12345] 等价于 [1-5]
我们知道“^”符号表示匹配行首,但是,“^”符号放到“[]”符号中就不再表示匹配行首了,而是表示取反符号。
[^b-d] :表示不再b~d范围内的字符
[A-Za-z] [A-Za-z]* :匹配任意英文单词
二、正则表达式的扩展:
扩展的正则表达式元字符及其意义符号 | 意义 |
? | 匹配0个或一个在其之前的那个普通字符 |
+ | 匹配一个或多个在其之前的那个普通字符 |
() | 表示一个字符集合或用在expr中 |
| | 表示“或”,匹配一组可选的字符 |
(根据测试可以不包括前面的字符,即匹配0次)
2."()"符号和“|”符号
"()"符号和“|”符号通常结合使用,表示一组可选字符的集合。
re(a|b|c)d 等价于 re[abc]d
"|"符号也可以表示多个正则表达式的“或”关系。
grep -E “zha?ng|zhi” 文件
三、通配符:
bash shell本身不支持正则表达式,使用正则表达式的是shell命令和工具,如grep,sed,awk。bash shell可以使用正则表达式中的一些元字符实现通配(Globbing)功能。
通配是把一个包含通配符的非具体文件名扩展存储在计算机,服务器或者网络上的一批具体文件名的过程。(可以看出通配主要应用匹配文件名上,而正则主要应用于字符串上)
最常用的通配符包括正则表达式元字符:?、*、[]、{}、^等。
符号 | 意义 |
* | 任意位的任意字符 |
? | 一个任意字符 |
^ | 取反 |
表示一组表达式的集合。如:{[a-h]*.awk ,a?.txt}
相关文章推荐
- 【Unix/Linux编程实践】从零做起:编写who命令
- Linux-4.3在mini6410上的移植
- linux下elf重定位理解
- Linux下C语言编程
- centos7没有安装ifconfig命令的解决方法
- 基于mini2440的裸机led程序及其链接脚本分析
- centos安装caffe python接口时候可能出现错误
- Linux常用终端快捷键
- 【Unix/Linux编程实践】 动手实现简单的more
- 用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境
- 【linux】BootLoader简介(c语言编程)
- 在Linux上使用Wine安装轻聊版的QQ的步骤讲解
- centos下安装webbench最新版本-实现并发测试
- 《鸟哥的Linux私房菜基础篇》阅读笔记——第3章、第8章
- Linux任务计划及sudo详解
- SercureCRT&CuteFTP实现windows与虚拟机linux互联
- 【linux】多线程编程(c语言编程)
- Linux的日志文件
- mac上对CentOS6.5安装VNC流程
- 【linux】进程间的通信简介(c语言编程)