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:]] 匹配空行
\< 或 \b 词首锚定,用于匹配单词模式最左侧
\> 或者 \b 词尾锚定,用于匹配单词模式最右侧
\<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次

位置锚定

字符 意义
^ 行首锚定
$ 行尾锚定
\< 或 \b 词首锚定
\> 或 \b 词尾锚定

分组

()     分组
\1 \2  分组后向引用

  

 

posted @ 2020-02-17 21:32  闫世成  阅读(160)  评论(0编辑  收藏  举报