您的位置:首页 > 其它

第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次之间

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等

3.正则表达式的扩展

符号

意义

?

匹配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

3.通配

1. 通配(globbing)是:把一个包含通配符的非具体文件名扩展到存储在计算机、服务器或者网络上的一批具体文件名的过程。

2. 最常用的通配符包括正则表达式元字符:?、*、[]、{}、^等,通配符与元字符意义不完全相同:

*符号不再表示其前面字符的重复,而是表示任意位的任意字符;
?字符表示一位的任意字符;
^符号在通配中不代表行首,而是代表取反意义。
ls -l *.awk表示列出以.awk结尾的文件的信息;

ls -l 0?.pem表示列出以0开头、后面为一个字符且结尾为.pem的文件信息;

ls -l [a-h]*.[^awk]*表示列出以a~h开头,不以.awk结尾的文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: