正则表达式在处理数据时非常有用,它凭借强大的模式匹配功能,能够用来精确地过滤文本数据,提取有用的数据信息。
graph LR
A[数据流 ]--> B{正则表达式}
B --> C[匹配数据]
B --> D[滤出数据]
正则表达式是通过正则表达式引擎实现的,正则表达式引擎负责解释正则表达式模式并使用这些模式进行文本数据匹配。在Linux中,主要有两种主流正则表达式引擎:
【注】虽然 / 不是特殊字符,但在sed、gawk编辑器的正则表达式中同样需要使用 \ 进行转义。
特殊字符组 | 功能 |
---|---|
[[:alpha:]] | 匹配任一字母字符(不区分大小写) |
[[:alnum:]] | 匹配任一字母、数字字母(0~9、A~Z、a~z) |
[[:blank:]] | 匹配空格或者制表符 |
[[:digit:]] | 匹配0~9间的任一数字 |
[[:lower:]] | 匹配任一小写字符a~z |
[[:print:]] | 匹配任一可打印字符 |
[[:punct:]] | 匹配任一标点符号 |
[[:space:]] | 匹配任一空白字符(空格、制表符、NL、FF、VT、CR) |
[[:upper:]] | 匹配任一大写字符A~Z |
ERE 模式在 BRE 模式的基础上扩展了一些额外功能。
特殊字符 | 名称 | 功能 |
---|---|---|
? | 问号 | 匹配问号前的字符0次或1次 |
+ | 加号 | 匹配加号前的字符1次或多次 |
{ } | 花括号 | 限定花括号前的字符重复出现次数{m}:准确出现 m 次{m,n}:至少出现 m 次、至多 n 次 |
| | 管道符 | 用逻辑 OR 方式连接左右两个模式(至少匹配二者中的一个) |
( ) | 圆括号 | 包括的模式组将被视为一个标准字符看待 |