正则表达式:是用于描述一组字符串特征的模式,用来匹配特定的字符串,通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的的工具。
分类:
基准正则表达式:grep
扩展的正则表达式:egrep -E
Perl的正则表达式:-P
grep:全局寻找基本正则表达式匹配到的内容所在行,并打印出来。grep匹配是贪心匹配。
egrep:全局寻找扩展正则表达式匹配到的内容所在行,并打印出来。
正则表达式的基本三要素:字符类,数量限定符,位置限定符
(1)字符类(举例):
.:匹配任意一个字符
因为grep是贪心匹配,所有都匹配
[]:匹配括号中任意一个字符
-:在括号内表示字符范围
有两个[],所以匹配两个字符,第一个是a-z,第二个是1-3,因此匹配b1,d3
^:位于括号内的开头,匹配除括号中的字符外任意一个字符
匹配除a-z之外的字符
(2)数量限定符(举例):
?:紧跟在它前面的单元应匹配0次或1次
因为贪心匹配
+:紧跟在它前面的单元应匹配1次或多次
*:紧跟在它前面的单元应匹配0次或多次
{N}:紧跟在它前面的单元精确匹配N次
{N,}紧跟在它前面的单元至少匹配N次
(3)位置限定符(举例):
^:匹配行首位置
匹配以字母开头的行
$:匹配行尾位置
匹配以数字结尾的行
\<:匹配单词开头位置
\>:匹配单词结尾位置
\b:匹配单词开头或结尾
这个单词既是开头也是结尾,说明只有这个单词
特殊符号
():将包含的内容作为一个整体,用数量限定符来限定
abc作为一个整体出现3次
\:转义字符,普通字符转为特殊字符,特殊字符转为普通字符
此时不加-E选项表示用基准正则匹配,此时就应该使用转义字符
| 、连接多个正则表达式进行多次筛选
例题:找出手机号码
分析:手机号码有13、15、17、18开头,共11位