正则表达式,regular expressions,由一类特殊字符及文本字符所编写的模式,其中字符表示控制或通配的功能。
- 通配符功能是用来处理文件名
- 正则表达式是处理文本内容中字符
1. 基本正则表达式
- 字符匹配
. 匹配任意单个字符,可以是一个汉字
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符
[:cntrl:] 不可打印的控制符(退格,删除等)
[:digit:] 十进制数字
[:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
- 匹配次数:
* 匹配前面的字符任意次
.* 任意长度的任意字符
? 匹配前面字符0或1次
+ 匹配其前面的字符至少1次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
{,m} 匹配前面的字符至多m次
{n,} 匹配前面的字符至少n次
- 位置锚定:
^ 行首锚定
$ 行尾锚定
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 词首锚定
\> 或 \b 词尾锚定
<PATTERN> 匹配整个单词
- 匹配分组
分组: 用()将多个字符捆绑在一起,当作要给整体处理,如\(password)+
后向引用:分组括号中的模式匹配到的内容被正则表达式引擎记录在内部变量中,而这些变量命名方式为:\1,\2...,即从左侧模式开始的次序
2. 扩展正则表达式
和基本表达式区别不大,只是少了转义字符
- 字符匹配元字符
- 次数匹配
- 位置锚定
- 分组和其他
() 分组
后向引用:\1,\2,...
| 或者
a|b a或b
C|cat C或cat
(C|c)at Cat或cat