标签:
正则表达式:由一串字符和元字符构成的字符串,简称RE(Regular Expression),主要功能是文本查询和字符串操作。
元字符(metacharacters):用来阐释字符表达式意义的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。
注:a、b、2等字符属于普通字符,普通字符可以按照字面意思理解,如:a只能理解为英文的小写字母a,没有其他隐藏含义。而*、^、[]等元字符,Shell赋予了它们超越字面意思的意义,如:*符号实际上却表示了重复前面的字符0次或多次的隐藏含义。
上图描述了正则表达式用于数据流处理的过程,完成数据过滤,将不满足正则表达式的数据拒绝掉,剩下与正则表达式匹配的数据。
符号 | 意义 |
* | 0个或多个在*字符之前那个普通字符 |
. | 匹配任意字符 |
^ | 匹配行首,或后面字符的非 |
$ | 匹配行尾 |
[] | 匹配字符集合 |
\ | 转义符,屏蔽一个元字符的特殊意义 |
\<\> | 精确匹配符号 |
\{n\} | 匹配前面字符出现n次 |
\{n,\} | 匹配前面字符至少出现n次 |
\{n,m\} | 匹配前面字符出现n次与m次之间 |
1 *符号
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等
符号 | 意义 |
? | 匹配0个或1个在其之前的那个普通字符 |
+ | 匹配1个或多个在其之前的那个普通字符 |
() | 表示一个字符集合或用在expr中 |
| | 表示“或”意义,匹配一组可选的字符 |
1 ?符号
JO?B匹配O字符0次或1次,即JOOB,JOB
2 +符号
S+EU匹配S1次或任意次,如SSEU,SSSSEU。但不能SEU
3 () 和|字符
r(e|a)d表示在字符e,a选择任意一个,即red、rad
1. 通配(globbing)是:把一个包含通配符的非具体文件名扩展到存储在计算机、服务器或者网络上的一批具体文件名的过程。
2. 最常用的通配符包括正则表达式元字符:?、*、[]、{}、^等,通配符与元字符意义不完全相同:
ls -l *.awk表示列出以.awk结尾的文件的信息;
ls -l 0?.pem表示列出以0开头、后面为一个字符且结尾为.pem的文件信息;
ls -l [a-h]*.[^awk]*表示列出以a~h开头,不以.awk结尾的文件。
标签:
原文地址:http://www.cnblogs.com/boyiliushui/p/5568409.html