什么是正则表达式
描述
常用正则表达式的shell命令
Linux三剑客
命令 | 描述 |
grep | 文本过滤 |
sed | 流编辑器 |
awk | 报告生成器、文本分析工具 |
补充点:
基本正则表达式
英文:BRE Basic Regular Expression 简写:BRES
字符 | 描述 | 举例 |
. | 匹配任意一个字符 | 例如:cd.y --> 匹配cdly、cdqy |
* | 重复前一个字符0次或多次 | 例如:go*gle --> 匹配gogle、google、gooogle等 |
.* | 匹配任意长度的任意字符 | 例如:g.*gle --> 匹配gle、gogle、google、gooogle等 |
^ | 锚定行首,匹配开头 | 例如:^# --> 搜寻以#开头的行 |
$ | 锚定行尾,匹配结尾 | 例如:#$ --> 搜寻以#结束的行 |
^$ | 匹配空行 | |
[] | 匹配指定范围内的任意单个字符 | 例如:g[lf] --> 匹配gl、gf |
[^] | 匹配指定范围外的任意单个字符 | 例如:[^a-c] --> 匹配非a、b、c字符以为的行 |
\ | 转义符,屏蔽一个字符的特殊意义 | 例如:\* --> 匹配* |
转义符(扩展)
特殊字符
扩展正则表达式
英文:ERE Extend Regular Expression 简写:EREs
字符 | 描述 | 举例 |
? | 匹配前边的字符出现0次或1次 | 例如:egrep 'go?d' 、grep 'go\?d' 匹配gd、god等 |
+ | 匹配前边的字符出现1次或多次 | 例如:egrep 'go+d' 、 grep 'go\+d' 匹配god、good、goood等 |
() | 匹配整个括号内的字符串 | 例如:egrep 'g(oo|la)' 、grep 'g\(oo\|la\)' 匹配good、glad |
{} | 匹配前面的字符出现的次数 | 例如:egrep 'cd{1,2}' 、 grep 'cd\{1,2\}' 匹配cd、cdd |
| | "或"匹配一组可选字符 | 例如:egrep 'god|good' 、 grep 'god\|good' 匹配god、good |
元字符区别
posix字符类(BRE、ERE、PRE)
特殊符号 | 描述 |
[:alnum:] | 代表英文字母大小写及数字,比如:[a-zA-Z0-9] |
[:alpha:] | 代表任何英文大小写,比如:[a-zA-Z] |
[:lower:] | 代表小写字母,比如:[a-z] |
[:upper:] | 代表大写英文字母,比如:[A-Z] |
[:digit:] | 代表数字,比如:[0-9] |
[:blank:] | 代表空白按键或[Tab] 按键 |
[:cntrl:] | 代表键盘上面的控制按键,比如:CR、LF、Tab、Del.. 等等 |
[:graph:] | 除了(空白按键 [Tab] 按键) 外的其他所有按键(和[:print:]一样,但不包含空格) |
[:print:] | 代表任何可以被打印的字符(和[:graph:]类似,包含空格) |
[:punct:] | 代表特殊符号,比如:分号\" 单引号\' ? ! ; : # $...(不属于:[:alnum:] [:cntrl:]的任何一个字符) |
[:space:] | 任何空白键(包括:空白键、[Tab]、CR等等 |
[:xdigit:] | 代表 16 进制的数字类型,因此包括: 0-9、A-F、a-f 的数字与字符 |
[:word:] | 匹配单词里面的字符(大小写字母) |
[:ascii:] | 匹配所有的"ASCII"字符 |
[=c=] | 代表与字符"c"等价的所有字符 |