正则表达式
在linux中,正则表达式是用于文本搜索、文本匹配以及输入验证的一种强大的模式匹配语法。在很多命令行工具(比如:grep sed awk perl等)都能使用正则表达式增强文本处理能力。
一、基础正则表达式
正则符号 | 含义 |
---|
^ | 行的开始,例如^Line,将会匹配所有以“Line”开头的行 |
$ | 行的结束,例如Line$,将会匹配以“Line”结尾的行 |
. | 匹配任意单个字符,除了(新的一行) |
* | 匹配前面的字符0次或者多次,比如“lo+”将会匹配出l,或者是lo,或者是loo,或是looo |
[ xxx] | 字符集合,匹配括号中的任何字符,例如[aeiou]将会匹配所有的元音字符 |
[^] | 否定的字符集合,匹配除括号中的任何字符,例如[^aeiou]将会匹配所有的非元音字母 |
\ | 转义字符,用于匹配特殊字符。例如\ .将会匹配实际的点(.)字符 |
\ ( \ ) | 标记匹配的字符为特殊的组合(在基础正则表达式中用反斜杠,而扩展正则表达式中不用) |
二、扩展正则表达式
正则符号 | 含义 |
---|
+ | 匹配前面的字符一次或者多次。例如lo+将会匹配lo或者是loo,looo |
? | 匹配前面的字符0次或者1次 |
{n} | 匹配前面的字符恰好n次 |
{n,} | 匹配前面的字符至少n次 |
{n,m} | 匹配前面的字符至少n次,但是不多于m次 |
l | 选择符号,逻辑或。比如AlB,将会匹配A或者是B |
( ) | 分组符号,用于定义作为单个单位的子表达式。例如(text)+将匹配“text”,“texttext等” |
^ | 含义与基础正则表达式相同,在扩展正则表达式中也适用 |
$ | 含义与基础正则表达式相同,在扩展正则表达式中也适用 |
特殊字符合集
正则符号 | 含义 |
---|
\d | 匹配任何数字。相当于【0-9】 |
\D | 匹配任何非数字,相当于[^0-9] |
\w | 匹配字母数字字符,相当于【a-z,A-Z,0-9】 |
\W | 匹配任何非字母数字字符,相当于【^a-z,A-Z,0-9】 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等 |
\S | 匹配任何非空白字符 |
⚠️正则表达式注意事项
正则表达式非常强大灵活,但同时也比较复杂。比如有些命令默认支持基础正则表达式(如grep)然而其它命令需要特定的选项来开启扩展正则表达式支持如(egrep 或是 grep -E)。有复杂或者是不确定的建议大家使用在线工具先进行测试和验证。