简述
正则表达式是什么?
由一类特殊字符及文本字符所编写的模式,其中有些元字符不表示字符字面意义,而表示控制或统配的功能.当然正则表达式适用于所有语言.
Linux中支持正则表达式的程序
grep,sed,awk,vim,less,nginx等
正则表达式的分类
基本正则表达式: BRE
扩展正则表达式: ERE
基本正则表达式
字符匹配
| 字符 | 意义 |
| . | 匹配任意字符 |
| [] | 匹配指定范围内的单个字符 |
| [^] | 匹配指定范围外的单个字符 |
| [:alnum:] | 匹配数字和字母 |
| [:alpha:] | 匹配任何英文大小写字符 |
| [:lower:] | 匹配小写字母 |
| [:upper:] | 匹配大写字母 |
| [:digit:] | 匹配十进制数字 |
| [:xdigit:] | 匹配十六进制数字 |
| [:space:] | 匹配水平和垂直的空白字符 |
| [:blank:] | 匹配空白字符(制表符和空白格) |
| [:graph:] | 匹配可打印的非空白字符 |
| [:punct:] | 匹配标点符号 |
| [:print:] | 匹配可打印字符 |
| [:cntrl:] | 匹配不可打印的控制字符 |
匹配次数
用在指定次数的字符后面,用于指定前面的字符出现的次数.
| 字符 | 意义 |
| * | 匹配前面的字符,任意次包括0次 |
| .* | 匹配前面任意字符任意次数 |
| ? | 匹配前面的字符0次或者1次 |
| + | 匹配前面的字符至少1次 |
| {n} | 匹配前面的字符n次 |
| {m,n} | 匹配前面的字符至少m次,至多n次 |
| {,n} | 匹配前面的字符至少出现n次 |
| {n,} | 匹配前面的字符至多出现n次 |
位置锚定
定位出现的位置
| 字符 | 意义 |
| ^ | 行首锚定,用于模式最左侧 |
| $ | 行尾锚定,用于模式最右侧 |
| ^PATTERN$ | 用于匹配整行 |
| ^$ | 匹配空行 |
| ^[[:space:]] | 匹配空行 |
| < 或 | 词首锚定,用于匹配单词模式最左侧 |
| > 或者 | 词尾锚定,用于匹配单词模式最右侧 |
| <PATTERN> | 匹配整个单词 |
分组
将一个或者多个字符捆绑在一起,单做一个整体进行处理
( ) 分组
1 2 分组的后向引用, 1 2 调用第一个第二个分组匹配的结果,以最左边括号
如下:
echo abc cc adc abc dd ace | grep -o "(a.c).*1"
结果: abc cc abc abc
扩展正则表达式
简单来说就是去掉了转移符,是匹配模式更简便直观.
字符匹配
| 字符 | 意义 |
| . | 任意单个字符 |
| [] | 指定范围的单个字符 |
| [^] | 不在指定范围的字符 |
匹配次数
| 字符 | 意义 |
| * | 匹配前面的字符出现任意次数 |
| ? | 匹配前面的字符出现0次或者1次 |
| + | 匹配前面的字符0次或者1次 |
| {n} | 匹配前面的字符出现n次 |
| {m,n} | 匹配前面的字符出现至少m次至多n次 |
位置锚定
| 字符 | 意义 |
| ^ | 行首锚定 |
| $ | 行尾锚定 |
| < 或 | 词首锚定 |
| > 或 | 词尾锚定 |
分组
() 分组 1 2 分组后向引用