POSIX尺度将正则表达式分为两类
>根本正则表达式
>扩大正则表达式
大部份linux运用和工具仅支撑根本的正则表达式。
============根本的正则表达式元字符聚集及其意义============
* 匹配0个或多个
. 匹配任意一个字符
^ 匹配开头
$ 匹配结尾
[] 匹配字符聚集
\ 转义字符
\<\> 准确匹配符号
\{n\} 匹配前面字符涌现n次
\{n,\} 匹配前面的字符涌现最少n次
\{n,m\} 匹配前面的字符n-m次
==========================================================
匹配空行:^$
\<\>表现准确匹配符号
\<the\>表现匹配the这个单词,而不匹配包括the字符的单词,如then,them,there,another等
awk,perl等linux工具还支撑正则表扩大出来的字符
=============扩大正则表达式===============================
? 匹配0个或1个在其之前的那个普通字符
+ 匹配1个或多个在其之前的那个普通字符
() 表现一个字符集或用在expr中
| 表现"或",匹配一组可选的字符
==========================================================
通配符
bash shell本身不支撑正则表达式,支撑的是shell命令和工具
shell支撑通配符
=============通配符=======================================
* 任意位的任意字符
? 任意一个字符
[] 表现规模
{} 一组表达式组合,这些表现是"或"的关系
^ 表现取反
例子:
ls -l *.awk 以.awk结尾的文件
ls -l 0?.pem 以0开头,后面跟一个字符,且后缀是.pem的文件
ls -l [a-h]*.awk 以[a-h]开头的.awk文件
ls -l [a-h]*.[^awk]* 以[a-h]开头,且后缀不是awk的文件
ls -l {[a-h]*.awk,0?.pem} 以0开头,后面跟一个字符,且后缀是.pem的文件 或 以[a-h]开头的.awk文件
==========================================================
POSIX
为了坚持不同国度的字符编码的一致性,POSIX(Portable Operating System Interface)增长了特别的字符类,以[:classname]的格局给出,grep命令支撑POSIX字符类。
==============POSIX=======================================
类名 意义
[:upper:] [A-Z]
[:lower:] [a-z]
[:digit:] [0-9]
[:alnum:] [0-9a-zA-Z]
[:space:] 空格或Tab
[:alpha:] [a-zA-Z]
[:cntrl:] ctrl键
[:graph:]或[:print:] 表现ASCII码33-126之间的字符
[:xdigit:] 十六进制数字[0-9a-fA-F]
==========================================================
POSIX尺度将正则表达式分为两类
>根本正则表达式
>扩大正则表达式