linux shell 正则表达式(BREs,EREs,PREs)差异比较

乐清SEO_开发应用_linux_ 乐清SEO2021-04-09 转载自:

在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。这些是正则表达式的定义。 由于起源于unix系统,因此很多语法规则一样的。但是随着逐渐发展,后来扩展出以下几个类型。了解这些对于学习正则表达式。

一、正则表达式分类:

1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx  简称 BREs) 
2、扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs) 
3、Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)

说明:只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法

二、Linux 中常用文本工具与正则表达式的关系 

常握 Linux 下几种常用文本工具的特点,对于我们更好的使用正则表达式是很有帮助的

grep , egrep 正则表达式特点:

 

复制代码代码如下:

1)grep 支持:BREs、EREs、PREs 正则表达式 
grep 指令后不跟任何参数,则表示要使用 ”BREs“  
grep 指令后跟 ”-E" 参数,则表示要使用 “EREs“ 
grep 指令后跟 “-P" 参数,则表示要使用 “PREs" 

2)egrep 支持:EREs、PREs 正则表达式 
egrep 指令后不跟任何参数,则表示要使用 “EREs” 
egrep 指令后跟 “-P" 参数,则表示要使用 “PREs" 

3)grep 与 egrep 正则匹配文件,处理文件方法 
a. grep 与 egrep 的处理对象:文本文件 
b. grep 与 egrep 的处理过程:查找文本文件中是否含要查找的 “关键字”(关键字可以是正则表达式) ,如果含有要查找的 ”关健字“,那么默认返回该文本文件中包含该”关健字“的该行的内容,并在标准输出中显示出来,除非使用了“>" 重定向符号, 
c. grep 与 egrep 在处理文本文件时,是按行处理的 

 

sed 正则表达式特点

 

复制代码代码如下:

1)sed 文本工具支持:BREs、EREs 
sed 指令默认是使用"BREs" 
sed 命令参数 “-r ” ,则表示要使用“EREs" 
2)sed 功能与作用 
a. sed 处理的对象:文本文件 
b. sed 处理操作:对文本文件的内容进行 --- 查找、替换、删除、增加等操作 
c. sed 在处理文本文件的时候,也是按行处理的 

 

Awk(gawk)正则表达式特点

 

复制代码代码如下:

1)Awk 文本工具支持:EREs 
awk 指令默认是使用 “EREs" 
2)Awk 文本工具处理文本的特点 
a. awk 处理的对象:文本文件 
b. awk 处理操作:主要是对列进行操作 

 

三、常见3中类型正则表达式比较
 


四、三种不同类型正则表达式比较

 

 

复制代码代码如下:


注意: 当使用 BERs(基本正则表达式)时,必须在下列这些符号前加上转义字符('\'),屏蔽掉它们的 speical meaning  “?,+,|,{,},(,)” 这些字符,需要加入转义符号”\”

 

注意:修饰符用在正则表达式结尾,例如:/dog/i,其中 “ i “ 就是修饰符,它代表的含义就是:匹配时不区分大小写,那么修饰符有哪些呢?常见的修饰符如下:

g   全局匹配(即:一行上的每个出现,而不只是一行上的第一个出现)
s    把整个匹配串当作一行处理
m    多行匹配
i    忽略大小写
x    允许注释和空格的出现
U    非贪婪匹配

 

以上就是linux 常见3种类型正则表达式异同之处,整体了解这些,我相信在使用这些工具的时候,就可以更加清楚明晰了。