第3章 正则表达式1
2016-06-07 21:43
232 查看
1.正则表达式基础
正则表达式:由一串字符和元字符构成的字符串,简称RE(Regular Expression),主要功能是文本查询和字符串操作。元字符(metacharacters):用来阐释字符表达式意义的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。
注:a、b、2等字符属于普通字符,普通字符可以按照字面意思理解,如:a只能理解为英文的小写字母a,没有其他隐藏含义。而*、^、[]等元字符,Shell赋予了它们超越字面意思的意义,如:*符号实际上却表示了重复前面的字符0次或多次的隐藏含义。
上图描述了正则表达式用于数据流处理的过程,完成数据过滤,将不满足正则表达式的数据拒绝掉,剩下与正则表达式匹配的数据。
2.正则表达式中元字符集合及其意义:
符号 | 意义 |
* | 0个或多个在*字符之前那个普通字符 |
. | 匹配任意字符 |
^ | 匹配行首,或后面字符的非 |
$ | 匹配行尾 |
[] | 匹配字符集合 |
\ | 转义符,屏蔽一个元字符的特殊意义 |
\<\> | 精确匹配符号 |
\{n\} | 匹配前面字符出现n次 |
\{n,\} | 匹配前面字符至少出现n次 |
\{n,m\} | 匹配前面字符出现n次与m次之间 |
hel*o: *符号前面的普通字符是l,*字符就表示匹配l字符0次或多次,如字符串helo、hello、hellllllo都可以由hel*o来表示
2 .符号
…73.表示前面三个字符为任意字符,第4和第5个字符是7和3,最后一个字符为任意字符,如xcb738、4J973U都能匹配上述字符串
3 ^符号
^cloud表示匹配以cloud开头的行
4 $符号
micky$表示匹配以micky结尾的所有行
^$ 表示空白行
5 []匹配字符
[a-]匹配所有小写字母
[^a-c]匹配不在a~c中的所有字符(^在此表示取反)
6 \符号
\.
7 \<\>符号
\<the\> 精确匹配单词the,them, they等不匹配
8 \{\}系列符号
\{n\}:匹配前面字符出现n次,如 JO\{3\}B 匹配JOOOB
\{n,\}:匹配前面字符至少出现n次,如JO\{3,\}B匹配JOOOB、JOOOOB、JOOOOOB等字符串
\{n,m\}:匹配前面字符出现n次与m次之间,如JO\{3,6\}B匹配JOOOB、JOOOOOOB等字符串
[a-z] \{5\}:匹配5个小写英文字母,比如hello、house等
3.正则表达式的扩展
符号 | 意义 |
? | 匹配0个或1个在其之前的那个普通字符 |
+ | 匹配1个或多个在其之前的那个普通字符 |
() | 表示一个字符集合或用在expr中 |
| | 表示“或”意义,匹配一组可选的字符 |
JO?B匹配O字符0次或1次,即JOOB,JOB
2 +符号
S+EU匹配S1次或任意次,如SSEU,SSSSEU。但不能SEU
3 () 和|字符
r(e|a)d表示在字符e,a选择任意一个,即red、rad
3.通配
1. 通配(globbing)是:把一个包含通配符的非具体文件名扩展到存储在计算机、服务器或者网络上的一批具体文件名的过程。2. 最常用的通配符包括正则表达式元字符:?、*、[]、{}、^等,通配符与元字符意义不完全相同:
*符号不再表示其前面字符的重复,而是表示任意位的任意字符;
?字符表示一位的任意字符;
^符号在通配中不代表行首,而是代表取反意义。
ls -l *.awk表示列出以.awk结尾的文件的信息;
ls -l 0?.pem表示列出以0开头、后面为一个字符且结尾为.pem的文件信息;
ls -l [a-h]*.[^awk]*表示列出以a~h开头,不以.awk结尾的文件。
相关文章推荐
- C/C++ 完全数
- 【转】【复】实现复数中的运算符重载
- 在web.xml中配置diaplay-name是什么意思
- 使用C#写出一个简单的记事本程序
- Android知识-ViewPager中嵌套activity页面
- 2969 角谷猜想
- oop概念性讲解
- 动态规划1-数字三角形(算法基础 第4周)
- Ansible源码分析之svn模块
- Android5.X和Android6.X上读写外置 USB设备的方案
- CS231n 2016 通关 第五、六章 Batch Normalization 作业
- emoji
- Leetcode Binary Tree Upside Down
- C/C++ 中缀表达式转换成后缀表达式并求值
- 多线程和多进程的区别(小结)
- Maven内置变量说明:
- telnet、ssh配置信息
- jquery与php交互之GET、 POST
- Struts2源码分析——StrutsPrepareAndExecuteFilter
- javaweb学习总结(四十五)——监听器(Listener)学习二