Linux之正则表达式

简述

正则表达式是什么?

由一类特殊字符及文本字符所编写的模式,其中有些元字符不表示字符字面意义,而表示控制或统配的功能.当然正则表达式适用于所有语言.

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  分组后向引用

  

原文地址:https://www.cnblogs.com/yanshicheng/p/12323782.html