正则表达式学习参考规范入门学习数据

1概述
正则表达式(正则表达式)是描述文本字符串特征的匹配模式。

与自然语言中的高、强字抽象描述事物的特征一样,正则表达式是对字符的抽象抽象,用来描述字符串的特征。

正则表达式(以下简称正则,正则表达式)通常并不是独立存在的。各种编程语言和工具为宿主语言提供定期支持,并根据各自语言的特点进行裁剪或扩展。

常规的入门很容易,语法规则有限,容易掌握,但常规的普及率不高,主要是因为经常大量的学校,有些细节对各种主机语言提供了太多的关注,但这些细节一般都不需要初学者注意。

当然,如果你想深入了解正则表达式,这些细节一定要关注,这是一件事,让我们从规律开始,正则表达式进入世界。

2正则表达式基
2.1基本概念
2.1.1字符串组成



字符串A5由两个字符组成,一个,5个和三个位置,这对于理解正则表达式的匹配原则很重要。

2.1.2占有性和零宽度

正则表达式的匹配过程中,如果子表达式匹配的字符,而不是位置,并保存到最终的匹配结果,这样子的表达占字符;如果子表达式匹配的位置,或匹配的内容不保存到最终的匹配结果。你认为这是一个表达式零宽度。
占有特征或零宽度是为了将匹配内容保存到最终匹配结果。
占有的特征是相互排斥的,和零宽度是不是相互排斥的,它是一个字符,只能在同一时间的子表达式匹配,和一个位置可以由多个零宽度的表达式同时匹配。

2.1.3正则表达式的组成

正则表达式由两个字符组成:一个是正则表达式中特定于特定含义的元字符,另一个是普通文本字符。
元字符可以是一个字符,例如,或字符序列,如。

2.2字(元字符)


2.2.1 {…}字符组(角色)

字符组可以匹配包含在{ }中的任何字符。虽然它可以是任意一个字符,但只能是一个字符。
字符组支持的字符范围的表现。当前面和后面,前面的字符的代码位置小于下列字符的代码位置。
{ ^…}排除型字符组。一个排他性集团代表任何非上市的性格,它只能有一个专属的字符组也支持由连字符范围的表示。






表达

解释


{作业}

表示A或B或C


{ 0-9 }

0到9中的任何数字相当于{ 0123456789 }。


{ u4e00 - u9fa5 }

表示任何汉字


{ A1 } }

表示除A,1,< <之外的任何其他字符


{ ^ A-Z }

除了小写字母以外的任何字符
举一个例子:uff1a
当{ } { } 0-9 0-9匹配Windows 2003,匹配成功,和比赛的结果是20。
当{在} ^匹配Windows 2003,匹配成功,匹配结果D.

2.2.2常见的字符范围的缩写

对一些常用的字符范围,如数字等,因为它是很常见的,即使使用{ }这样的字符集是0-9还麻烦,所以一些元字符被定义为代表的普通字符范围。






表达

解释


◎D

任何数字,相当于{ 0-9 },或任何一个在0 ~ 9


◎W

任何字母或数字或下划线,相当于a-za-z0-9_ } {




任何空白字符,相当于


◎D

任何非数字字符, D逆,相当于^ 0-9 } {


◎W

◎W是逆,相当于^ a-za-z0-9_ } {




任何非空格字符,都是倒字符,相当于
举一个例子:uff1a
当与Windows 2003匹配时,匹配成功,匹配结果为s 2。

2.2.3。小数点

小数点可以匹配任何字符,除了如果所有字符,包括要匹配,它们通常是用{ s }实现的,或者用。(s)匹配模式。






表达

解释




匹配任何字符以外的行

2.2.4其他元字符







表达

解释


^

匹配字符串开始的位置,而不是匹配任何字符。


美元

匹配字符串末端的位置,不匹配任何字符。


◎B

匹配单词的边界,不匹配任何字符。
举一个例子:uff1a
当A与CBA相匹配时,比赛失败,因为该表达式在开始位置后需要字符A,而CBA显然不满意。
当d $匹配123时,匹配成功,匹配结果为3。这个表达式需要匹配最后的数字。如果结局不是一个数,如123abc,匹配失败。

2.2.5转义字符

一些看不见的字符,或一个元字符,有规律的特殊意义,需要逃离的性格要匹配的字符本身。







表达

解释


r,

返回和转移




匹配本身


, $,。

匹配,$和。
下列字符通常需要在匹配时转义,在实际应用中,根据具体情况,转义字符可能不超过下列字符
{ $。{(|)* +

2.2.6 quantifier (Quantifier)

量词表示次一个子表达式的数量可以匹配。量词可以用来修改一个字符,一个字符组,或子表达式括在(),一些常用的量词定义为独立的元字符。






表达

解释

举一个例子


{是}

m次匹配表达式

{ 3 }相当于
(ABC){ 2 }等于紧紧


{,}

表达式至少匹配m次,最多n次。

可以匹配2到3的数字,如12或321。


{是}

表达式至少是m次匹配。

{ } { 8 } A-Z,代表至少8位字母




表达的是匹配的0或1倍,相当于{0,1}

AB可以匹配A或AB


*

表达式匹配0次或多次,相当于{ 0,}。

{在{ } }中表示0或任何字符数都不是。


+

表达式匹配1次或更多,至少1次,相当于{ 1,}。

在两个数字中间,至少表示一个空白字符。
注意:正则表达式不是动态生成的,不出现像{ 1 }这样的分类器,比如在相当于w的1 },但是会降低匹配效率和可读性,是多余的。

2.2.7分支结构(交替)

当一个子字符串的各种可能的字符串,分支结构的匹配,|多个子表达式或|关系是界定的范围(),如果在左、右两侧的|(NO)定义的范围,所以它是正确的整个|左右两侧的范围。






表达

解释


|

多个子表达式之间的关系
举一个例子:uff1a
^ AA | B美元可以匹配成功匹配时,中心,和匹配的结果是B,因为这表示匹配^ AA或B,而B美元可以匹配成功匹配时,从。
^(AA | B)$当匹配中心,匹配失败,因为这种表达的意思是,AA和B只能开始和结束位置之间,并从显然不满意。

3正则表达式的阶


3.1捕获组(捕获组)

捕获组是与正则表达式中子表达式匹配的数字编号或手动命名组中的内存的内容,供以后参考。






表达

解释


(表达)

一个普通的捕获组保存的子表达式所表达的内容到一个编号组。


(表达)

命名捕获组,保存的内容相匹配的子表达式,表达式的组名
一般捕获组(不捕获歧义)按数字编号。编号规则从1到右边编号。通常,一个编号为0的组表示整个表达式匹配的内容。
指定的捕获组可以使用捕获组名而不是序号来引用捕获的内容,提供更为方便的引用方式,而不注意捕获组的序号,或担心表达式的部分更改,这将导致捕获组引用错误。

3.2非俘获组

在一些表达式中,我们必须使用(),但不需要保存(中子)表达式匹配的内容。然后,我们可以使用非捕获组来抵消由于使用()造成的副作用。






表达

解释


(::表达)

进行子表达式的匹配,将匹配内容保存到整个表达式的最终结果,但表达式匹配的内容不保存到单个组中。

3.3反向参考

捕获组匹配内容可以在正则表达式的外部程序中引用,也可以在表达式中引用。表达方式指的是向后引用。
反向引用通常是用来查找重复子串或限制子成对出现的。






表达

解释


1, 2

对序列号为1和2的捕获组的反向引用


◎K

对名为捕获组的反向引用
举一个例子:uff1a
(一| B)当 1场联合,比赛是成功的,其结果是AA。(一| B)当试图匹配,尽管它可以A或B的比赛,但在反向参考,相应的内容是固定的。

3.4视觉(环顾四周)

圆观只匹配的子表达式的匹配内容,不算最后一场比赛的结果,它是零宽度。
根据方向,有两种顺序和逆序。根据肯定和否定两种说法,有四种视觉,环顾四周相当于给位置加上一个附加条件。







表达

解释


(<表达式)

反向肯定会环顾四周,表明位置的左边可以匹配表达式。


(<<!表达)

反向视图否定,表示位置的左边不能匹配表达式。


(=表达式)

顺序申明圆视图,表明位置的右边可以匹配表达式。


(!表达)!

序列否定圆视图,表示位置的右边不能匹配表达式。
举一个例子:uff1a
当Windows + +与Windows 2003匹配时,匹配成功,匹配结果为2003。我们知道,+表示匹配多于一个数字,而(<视窗>)相当于附加条件。这意味着,左边必须是Windows,和它匹配的内容是不包括在匹配结果。相同的正则匹配不匹配时,Office 2003,因为任何字符串的数字串左不是Windows。
(!1)当+ +匹配123时,匹配成功,匹配结果为23。+ +匹配多个数字,但附加条件(!1)要求位置右侧的位置不能为1,所以匹配位置位于2位置前面。

3.5忽略优先权和匹配优先权

或者称为正则表达式匹配的贪婪和非贪婪模型。
标准量词所修饰的子表达式总是在匹配或不匹配时首先匹配,称为匹配优先权或贪婪模式。
一些NFA规则引擎支持优先级是忽略量词量词加一个标准,在这个时候,在匹配不匹配,总是忽略的比赛,只有通过忽略优先量词表达式必须匹配使表达式匹配成功,匹配称这种忽略优先,或非贪婪模式的。忽略优先量词包括{米},{ m,n },{,},*和+。
举一个例子:uff1a
源字符串:排列
正则表达式1:*匹配结果的排列。
正则表达式2:*匹配结果:AAA