在计算机科学中,它指的是一个字符串,用来描述或匹配一个字符串的字符串符合一定的语法规则。在很多文本编辑器或其他工具,正则表达式通常被用来检索和/或替换这些文本内容符合某一模式,许多编程语言都支持字符串操作正则表达式。例如,一个强大的正则表达式引擎是建立在Perl的正则表达式的概念最初是由工具软件在UNIX(例如sed和grep)。正则表达式通常缩写为正则表达式,用单数和复数的regexp,正则表达式,用正则表达式,表达式,和regexen.这是因为正则表达式的定义。在UNIX系统的起源中,许多语法规则是相同的,但是随着它的逐步发展,扩展了以下类型:理解这些规则学习正则表达式。

首先,正则表达式分类:

1、基本的正则表达式(基本的正则表达式又称为简称布雷斯基本正则表达式)
2,扩展的正则表达式(扩展正则表达式又称为缩写ERES扩展正则表达式)
3、Perl的正则表达式(Perl正则表达式也叫Perl正则表达式简写PRES)

描述:只有掌握正则表达式我们可以掌握Linux下常用的文本工具的使用(如grep,egrep,枪sed,awk,等)。

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

掌握linux下几种常用文本工具的特点,有助于更好地使用正则表达式。

grep,egrep正则表达式特征:

复制代码代码如下所示:
1):BREs,你是,grep支持下正则表达式
在grep指令不遵循任何参数,它是指用纤维
grep指令遵循E参数
grep指令如下- P参数,指示要使用的压力

2):EREs,压力较支持正则表达式
较后指令不遵循任何参数,它是指用眼睛
按egrep指令如下- P参数,指示要使用的压力

3)grep和egrep正则匹配文件,处理文件的方法
A. grep和egrep的处理对象:文本文件
B.过程grep和egrep:找到一个包含关键字的查找是否文本文件(关键词可以是一个正则表达式),如果有人找到关建的话,那么默认返回包含在文件内容的文本关建的字行,并显示在标准输出上,除非你使用>重定向符号,
C. grep和egrep处理线在处理文本文件


SED正则表达式的特征

复制代码代码如下所示:
1)对话文本工具支持:BREs,EREs
该指令默认是使用阿瑞斯
sed命令的参数R表明你想用你
2)SED函数和函数
由文本文件处理的对象
b.处理操作:对文本文件内容的搜索、替换、删除、添加和其他操作
在处理文本文件时,也用行处理


awk的特点(呆子)的正则表达式

复制代码代码如下所示:
1)awk文本工具支持:EREs
awk指令默认是使用眼睛
2)awk文本工具特点处理文本
A. AWK处理对象:文本文件
B. AWK处理操作:柱的主要操作


三。正则3正则表达式的比较





性格
解释
基本的正则表达式
扩展正则表达式
Python的正则表达式
Perl的正则表达式

逃避

◎
◎
◎
◎

^
比赛中,如^狗,从狗的串线(注:awk指令,开始^匹配字符串)
^
^
^
^

美元
在最后的线,例如:狗$,^,与排在最后的匹配字符串的狗(注:awk指令,是结束的字符串,'$')
美元
美元
美元
美元



^ $


匹配空行
^美元
^美元
^美元
^美元

^字符串
例如匹配行,:^狗'matches美元行只有一个字符串的狗
^字符串
^字符串
^字符串
^字符串

◎<
比赛的话,如 <青蛙(相当于 bfrog '),匹配字开头的青蛙
◎<
◎<
我不支持它。
不支持(但你可以使用 B相匹配的词,例如: bfrog)



>
比赛的话,如:'frog >(相当于to'frog B结尾的单词),匹配与青蛙
>
>
我不支持它。
不支持(但你可以使用 B相匹配的词,例如:'frog B)



◎
匹配一个单词或一个特定的字符,例如:(相当于 bfrog B),
◎
◎
我不支持它。
不支持(但你可以使用 B相匹配的词,例如: bfrog B



()
例如,匹配表达式不支持(青蛙)
它不支持(但可以使用()),如:( )
()
()
()



()
例如,匹配表达式不支持(青蛙)
()
不支持(与())
不支持(与())
不支持(与())




匹配前面的子表达式0或1次(相当于{0,1}),如:在(是)可以匹配,和,
不支持(相同)




◎
匹配前面的子表达式0或1次(相当于 { 0,1 }),如:(是),与,,
◎
不支持(相同)
不支持(相同)
不支持(相同)


当角色是由任何其他限制(*,+,{ },{ },{ N,N,M }),模式匹配是不贪,非贪婪模式匹配搜索字符串尽可能小,而默认的贪婪模式匹配搜索字符串尽可能。例如,字符串哦
我不支持它。
我不支持它。
我不支持它。
我不支持它。

。
此外,一个换行符(')比任何单个字符(注:awk指令周期可以匹配换行符)
。
。(如果你想匹配任何字符,包括,请用(^美元)|(。)
。
(如果你想匹配任何字符,包括,使用:{ 。}

*
匹配前面的子表达式0次或以上(相当于{ 0 }),如:带*可以匹配Z和动物园
*
*
*
*

动作
匹配前面的子表达式1次或以上(相当于 { 1 },),例如:(是),可以 +行为,和whereisis
动作
不支持(+)
不支持(+)
不支持(+)

+
匹配前面的子表达式1次或以上(相当于{ 1 }),如:ZO +可以匹配ZO 和动物园
不支持(使用+动作)
+
+
+



{ }
n必须是0或正整数,和配子表达N次,例如,ZO { 2 }可以匹配
不支持(用 )
{ }
{ }
{ }

{ }
Zooz
不支持(使用,)
{ }
{ }
{ }

{,}
可以匹配OD
不受支持(用,})
{,}
{,}
{,}



X | Y
匹配x或y,例如:不support'z |(食品)可以匹配Z 或食物;(Z | F)ood'matcheszood 或食品。
不支持(X | Y)
X | Y
X | Y
X | Y



{ 0-9 }
匹配任意数量的数字字符,从0到9(注:增量写入)
{ 0-9 }
{ 0-9 }
{ 0-9 }
{ 0-9 }



{某}
字符集匹配任何字符,例如包含{ }匹配在ABC重点躺(注:如果元字符,例如。**,等等,它们被放在{ },然后它们将成为一个普通字符。
{某}
{某}
{某}
{某}



{某某}
一组负字符用于匹配任何不包含的字符(注:不包括换行符)。例如,{ }match'l ^ ABC的躺(注:{ } ^ XYZ在awk指令匹配任何字符和换行符是不包括在内)。
{某某}
{某某}
{某某}
{某某}

{ a-za-z }
匹配大写字母或小写字母中的任何字符(注意:要递增地写)
{ a-za-z }
{ a-za-z }
{ a-za-z }
{ a-za-z }

{ ^ a-za-z }
匹配大写字母和小写字母以外的任何字符(注:增加)
{ ^ a-za-z }
{ ^ a-za-z }
{ ^ a-za-z }
{ ^ a-za-z }



◎D
从0到9的匹配任何数量的字符(相当于{ 0-9 })
我不支持它。
我不支持它。
◎D
◎D



◎D
匹配非数字字符(相当于^ 0-9 { })
我不支持它。
我不支持它。
◎D
◎D

的
匹配任何非空白字符(相当于
)
我不支持它。
我不支持它。
的
的

的
匹配任何空白字符,包括空格,制表符,和进纸(相当于 F
)
我不支持它。
我不支持它。
的
的

◎W


匹配任何非单词字符(相当于^ a-za-z0-9_ { })
◎W
◎W
◎W
◎W

◎W
匹配任何字符,包括一个下划线(相当于a-za-z0-9_ { })
◎W
◎W
◎W
◎W

◎B
例如匹配非单词边界,,年 b'can比赛the'er动词
◎B
◎B
◎B
◎B



◎B
匹配单词的边界,即单词和空格之间的位置。例如,年 b'can match'er永远
◎B
◎B
◎B
◎B

◎T
比赛水平制表符(相当于 x09和 CI)
我不支持它。
我不支持它。
◎T
◎T

V
匹配一个垂直制表符(相当于 x0b和CK)
我不支持它。
我不支持它。
V
V


匹配一个换行符(相当于 x0a和 CJ)
我不支持它。
我不支持它。



F
匹配一个进纸(相当于 x0c和 CL)
我不支持它。
我不支持它。
F
F

R
比赛一回签(相当于 x0d和厘米)
我不支持它。
我不支持它。
R
R


匹配转义字符本身







◎CX
比赛的控制字符指定x,例如,厘米匹配一个control-m或回车,和x的值必须是一个a-z或A-Z。否则,C是一个original'c'character。
我不支持它。
我不支持它。

◎CX



Xn
匹配n,其中n是116进制转义码。十六位小数的值必须是一个固定的两个数,例如, x41'matches , x041'is等于 X041 。ASCII编码可以在正则表达式中使用
我不支持它。
我不支持它。

Xn



嗯
与数字匹配,其中数字为正整数。
我不支持它。
嗯
嗯


{:alnum:}
匹配任何字母或数字({就}),例如:{ {:alnum:} }
{:alnum:}
{:alnum:}
{:alnum:}
{:alnum:}

{:阿尔法:}
匹配任何一个字母({ AZaz }),例如:α:} }:
{:阿尔法:}
{:阿尔法:}
{:阿尔法:}
{:阿尔法:}

{数字:}
匹配任何数量的({ 0-9 }),例如:{ } }的{:数字:
{数字:}
{数字:}
{数字:}
{数字:}

{以下:}
匹配任何一个小写字母(a-z { }),例如:低:} }:
{以下:}
{以下:}
{以下:}
{以下:}

{:上:}
匹配任意大写字母(a-z { })
{:上:}
{:上:}
{:上:}
{:上:}

{空间:}
任何一个空白字符:支持制表符、空格,例如:空格:}
{空间:}
{空间:}
{空间:}
{空间:}

{空白:}
空格和制表符(水平和垂直),例如:{空白:}
{空白:}
{空白:}
{空白:}
{空白:}

{图:}
任何人都能看出,可打印字符(注:不包括空格和换行符等),例如:{ } }的{:图:
{图:}
{图:}
{图:}
{图:}

{:打印:}
任何一个可打印字符(注:不包括:控制:}, 0'terminator,EOF文件结束(1),但包括,例如:空间符号){ {:打印:} }
{:打印:}
{:打印:}
{:打印:}
{:打印:}



{:cntrl:}
一个控制字符(第一个32个字符的ASCII字符集,即:十进制表示从0到31,例如:换行符,制表符,等等),例如:不是支配:} }


{:cntrl:}


{:cntrl:}


{:cntrl:}


{:cntrl:}

{:穿刺:}
任何标点符号(包括:{ },{:::alnum cntrl:},{:空间:}字符集)
{:穿刺:}
{:穿刺:}
{:穿刺:}
{:穿刺:}

{:xdigit:}
任何十六进制数(即:0-9,A-F,A-F)
{:xdigit:}
{:xdigit:}
{:xdigit:}
{:xdigit:}
四种和三种不同类型正则表达式的比较

复制代码代码如下所示:
注意:当使用纤维(基本正则表达式),必须用下列符号前加转义字符(专用),他们封锁了意义,+,|,{ },(,),这些角色需要加入转义符

注意:修饰符在正则表达式的结尾使用,例如,我是修饰符,这意味着当匹配时,它不表示情况,那么修饰符是什么常用修饰符如下:

g全局匹配(即每行的外观,而不只是第一行上的第一次出现)
s将整个匹配字符串视为一行。
多线匹配
我忽略了这个案例。
x允许注释和空格的出现。
u非贪婪匹配


以上是Linux常见的3种常用表达式的异同,我相信当我们使用这些工具时,我们可以更清楚、更清楚。