正则表达式RE
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
元字符
元字符是这样一类字符,他们表达的是不同于字面本身的含义
shell元字符(也称通配符) 由shell来解析,如rm -rf *.pdf,元字符*****shell将其解析为任意多个字符
正则表达式元字符 由各种执行模式匹配操作的程序来解析,比如vim、grep、sed、awk、python...
基本正则表达式元字符
元字符 | 功能 | 示例 |
---|---|---|
^ | 行首定位符 | ^root |
$ | 行尾定位符 | root$ |
. | 匹配任意单个字符 | r..t |
* | 匹配前一个字符0到多次 | r*t |
.* | 任意多个字符 | |
[] | 匹配指定范围内的一个字符 | [rR]oot |
[-] | 匹配指定范围内的一个字符 | [a-zA-Z0-9]oot |
\ | 用来转义元字符,使元字符回归本意 | r\.\.t |
\< | 词首定位符 | \<root |
\> | 词尾定位符 | bash\> |
\(..\) | 匹配稍后使用的字符标签 | %s/(bin)/bash/\1/sh/g |
x\ | 字符x重复出现m次 | |
x\ | 字符x重复出现m次以上 | |
x\ | 字符x重复出现m到n次 |
拓展正则表达式元字符
元字符 | 功能 | 示例 |
---|---|---|
+ | 匹配前一个字符1到多次 | ro+t |
? | 匹配前一个字符0次或1次 | ro?t |
a|b | 匹配a或b | root|leo |
() | 组字符 | (ot)+ |
(..)(..)\1\2 | 标签匹配字符 | (love)able\1er |
x | 字符x重复出现m次 | |
x | 字符x重复出现m次以上 | |
x | 字符x重复出现m到n次 |
POSIX字符类
元字符 | 功能 | 示例 |
---|---|---|
[:alnum:] | 任意数字或字母 | [[:alnum:]]+ |
[:alpha:] | 任意大小写字母 | [[:alpha:]] |
[:blank:] | 空格与制表符 | [[:blank:]]* |
[:digit:] | 任意数字 | [[:digit:]]? |
[:lower:] | 小写字母 | [[:lower:]] |
[:upper:] | 大写字母 | [[:upper:]] |
[:punct:] | 标点符号 | [[:punct:]] |
[:space:] | 包括换行符、回车等在内的所有空白 | [[:space:]]+ |