第五天:正则表达式
一、基本正则表达式
1、字符匹配
. 匹配任意单个字符,可以是一个汉字 " \."
[] 匹配指定范围的任意单个字符 [0-9] [a-z]
[^] 匹配指定范围外的任意单个字符 [^djy]
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符
[:space:] 包括空格、制表符、换行符、回车等各种类型的空白
[:cntrl:] 不可打印的控制字符
[:digit:] 十进制数字
[:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
2、匹配次数
* 匹配前面的字符任意次,包括0次,
.* 任意长度的任意字段
\? 前面的字段出现0或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配所有的字符n次
\{m,n\} 匹配前面的字符至少N次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
3、位置锚定
^ 行首
$ 行尾巴
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或\b 词首锚定,用于单词模式的左侧
\> 或\b 词尾锚定,用于单词模式的右侧
\<pattern\> 匹配整个单词
\w 匹配单词构成部分,
\W 匹配非单词构成部分
4、分组其它
(1)将多个字符绑定在一起,当作一个整体处理
grep "(abc)\{3\}"
(2)或者: \| a\|b a或者b
二、扩展基本表达式
1、字符匹配
. 任意单个字符
【wang】 指定范围的字符
[^wang] 不在指定范围内的字符
[:alpha:] 代表任何英文大小写字符
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符
[:space:] 包括空格、制表符、换行符、回车等各种类型的空白
[:cntrl:] 不可打印的控制字符
[:digit:] 十进制数字
[:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
2、次数匹配
* 匹配前面字符任意次
?0或1次
+ 1次或多次
{n}匹配已n次
{m,n} 至少m,至多n次
3、位置锚定
^ 行首
$ 行尾
\< , \b 语首
\> , \b 语尾
4、
()分组
| 或者
a|b a或b
C|cat C或cat
(C|c)at Cat 或cat