正则表达式学习笔记

正则表达式

1、正则表达式的概念

如果我们对特定的某个字符操作的话,相对来说很简单,比如tom,mary。如果我需要操作的这些字符,他们不是具体的某些字符,比如第一个字符是字母,第二个是数字,第三个是特殊字符等。在我们现实生活中,我们可以使用一些特殊的字符表示,比如△字母,○表示数字,表示特殊字符。


2、Grep的基本用法

Grep也支持正则表达式,因为grep比较简单,所以我们就用grep来让大家理解什么是正则表达式。

Grep的作用是用来过滤含有特定字符的行。

用法:grep 关键字 file

wKioL1PqzeaiYBvEAABZAfSBlAk603.jpg

因为我们现在过滤的是比较简单的一个关键字。但如果说我要过滤一些特定字符的文件该如何完成?

我们可以这样来做:grep △○ file 

纸上可以这样写,但是计算机并不识别这些符号△○,所以就引入元字符的概念。


3、正则表达式元字符:

文件aa内容:

wKiom1PqzVKCuMErAABX9V6_rz4470.jpg


^ 表示行开头,下图表示匹配以tom开头的行

wKiom1Pqzb3T_bJWAABAGI6nw2I251.jpg


$ 表示行尾,下图表示匹配以tom结尾的行

wKiom1PqzevTC9b8AAA7ZO7A-ok016.jpg


. 表示单个字符,可以匹配除了换行符之外的所有字符。下图表示匹配包含tom及后面的任意三个字符的行:

wKioL1Pqz0PxazCFAAA_U_Vco9U542.jpg


* 表示其前面的字符可以出现任意次,包括0

wKiom1Pqzm3SCTOHAABLbDkrLyI670.jpg


+ 表示其前面的字符至少要出现一次:

wKiom1Pqzq-CSbMdAABCeXK_x8o998.jpg

这个命令里面使用了-E选项,意思是使用扩展的grep,因为grep所能使用的元字符有限。


元字符*+都是贪婪型的,即最长匹配。见下图:

wKioL1Pq0BSw1N3LAAAqdEKCeLM378.jpg


有时候我们需要最短匹配,又叫懒惰型匹配。匹配时只要在*后面加?即可。

wKiom1Pqzy_RdgQ9AAAnvZYY9GU859.jpg


表示其前面的字符可以有,也可以没有。

wKiom1Pqz2CzDTBzAAAp1atgmZI600.jpg

注意:grep不支持+? 这些元字符,如果要使用,需要扩展的grep(egrepgrep -E)

 

[] 表示匹配一个字符,出现在[]里面的字符都是“或”的关系。

wKiom1Pqz53Dk5KFAAAxR21FDa0929.jpg


如果是出现在[]外面的话,表示开头的意思,如果出现在[]里面的话,表示否定的意思。

wKioL1Pq0PqDb2ZHAABE_vjYJLg202.jpg


刚才^$,表示匹配行的开头和结尾,如果要匹配单词的开头,要使用:\<

wKiom1Pq0BTAP3xaAAAxR6TGlOM495.jpg


\> 表示匹配单词的结尾:

wKiom1Pq0EaR3yf6AAA5hgQ3pQA572.jpg


\btomb\ 表示只匹配单词为tom的行:

wKiom1Pq0HPyaEUEAAAox-F5sC4806.jpg


正则表达式中,也可以做标签,如果匹配模式中给某一部分做了一个标签,我们在后面就可以直接引用他。如果我们想对某一部分做标签的话,只要使用\(\)括起来就可以了,引用就使用\nn表示一个数字)。比如第一个被\(\)引起来的部分,引用就使用\1

wKioL1Pq0b2yxTZAAAAxp91LrnQ185.jpg


\{n\} 表示匹配其前面的字符n次,如下图:

wKioL1Pq0e3xiZOMAABG6Y-S-lo048.jpg


\{n,\} 表示匹配其前面的字符至少n次,如下图:

wKioL1Pq0i6RJ1ntAABL53kj4YI408.jpg


\{n,m\} 表示匹配其前面的字符至少n次,至多m次,如下图:

wKiom1Pq0UmCkZQiAABLY1ZV288374.jpg


[0-9] 表示匹配数字

wKiom1Pq0XXDo2_DAAAkrxC5HYY192.jpg


\d 也可以表示匹配数字:

wKioL1Pq0rPiP8JOAAAgstzdJVM033.jpg


\D 表示匹配非数字

\s 表示空格或tab   

\S 表示不能是空格或tab

\w 表示任意字符(大小写字母、数字、下划线)

\W 表示不能是字母、数字和下划线

 

正则表达式也支持国际字符:

[[:digit:]] 表示数字

wKioL1Pq0u_jm2r3AAAqFJjbfMo269.jpg

[[:alpha:]] 表示字母,包括大小写

 

[[:upper:]] 表示大写字母

 

[[:lower:]] 表示小写字母

 

你可能感兴趣的:(linux,正则表达式)