PHP的正则表达式捕获和非捕获组(详细的解决方案)

PHP的正则表达式捕获和非捕获组(详细的解决方案)
正则表达式在项目开发过程中经常使用。可以说正则表达式是每个程序员最基本的要求。初学者很累的时候,他们刚刚接触正则表达式。最近,PHP正则表达式,一个朋友写的博客,受益很多,并在通道很感兴趣,在章的数据捕获。这两章还涉及到的捕捉和非内容捕获规则表达式组分析这方面的内容

我们知道,一个正则表达式在(x)是一个matching'x'and一个匹配值的记录的一种表示。这是一个比较流行的说法,甚至这是不严谨的,只有()的捕获组的形式将记录匹配的值。捕获组的比赛,不记录非。

捕获组:

(模式)

此表单是我们看到最多的表单,匹配和返回捕获结果可以嵌套,从左到右依次排列。

复制代码代码如下所示:

正则表达式=美元/(AB(C)+ D(E));

$str = 'abccde;

$ =数组();
如果(preg_match($ regex,$str,$matches)){

print_r($匹配);

}
匹配结果:

复制代码代码如下所示:

阵列({ 0 } { 1 } = = > > abccde ABCC { 2 } = { 3 } = > > C E)

(模式)
这种方式虽然在构造正则表达式时看起来有点复杂,但基本上与(模式)相同,最大的优点体现在结果处理中。程序员可以根据自己的设置直接而快速地调用结果,而不是计算前几个子组所需的结果。
复制代码代码如下所示:

正则表达式=美元/(P w(P w))ABC(P 45 / W);
$str = 'fsabcd45;

$ =数组();
如果(preg_match($ regex,$str,$matches)){

print_r($匹配);

}
匹配结果:

复制代码代码如下所示:

阵列({ 0 } {组} = > fsabcd45 = > FS { 1 } = { } = > > FS组的{ 2 } = { } = > >的3 D { 3 } = > D)


数值是一个对捕获组的反向引用的整数。例如,2代表匹配值的第二个子组,它代表第一个子组匹配值。
复制代码代码如下所示:

$正则表达式=( W)/( w) 2 1 ;

$str = 'abba;

$ =数组();
如果(preg_match($ regex,$str,$matches)){

print_r($匹配);

}
匹配结果:

复制代码代码如下所示:

阵列({ 0 } { 1 } = >阿爸= >一{ 2 } = > B)
注意,我漏掉了一个小细节。在开始的时候,我的第一个代码为正则表达式= /( w)( W) 2 1 /;返回的结果不匹配的结果,经过调试,发现它只能使用。我们需要注意的区别和用法。

◎K
这不难理解(模式)和是一个名为捕获组的反向引用。名称是捕获组的名称。
复制代码代码如下所示:

正则表达式=美元/(P w)ABC K ;
$str =fabcf ;
回声preg_match_all($ regex,$str,$matches);
print_r($匹配);
匹配结果:

复制代码代码如下所示:

阵列({ 0 } =阵列({ 0 } {姓名} = = fabcf)阵列({ 0 } = F){ 1 } =阵列({ 0 } = F))
非俘获群:

(::模式)

唯一的区别是(模式)与模式匹配,但没有捕获匹配结果。

我们实际上有四种方式谈论一件事:预览。

预考分为正向和反向的预检预检。按字面理解,正向查找是否有匹配的字符串后面的一些特点,和反向预览是确定是否有匹配的字符串前的一些特征。

积极的预判断存在(=模式),和判断不存在(!模式)。

反向预检判断存在(<=模式),和判断不存在(<!模式)。

复制代码代码如下所示:

regx美元= /(<=一)BC(= D);
$str =ABCD EBCD ABCE EBCA ;
如果(preg_match_all($ regx,$str,$matches)){
print_r($匹配);

}
匹配结果:

复制代码代码如下所示:

数组({ 0 } =数组({ 0 } = BC))
无论这四种形式是否被使用,只要注意相对匹配字符串的位置和断言的肯定或否定,就会很快掌握。

此外,前四种形式检查零宽度,只有一个判决时进行匹配是匹配的,而不是被本身。/他(= L)LLO / /火柴你好,和他(= L)罗/不匹配啊。毕竟,字节数是不匹配的,前者只有4,后者5。

以上是PHP正则表达式捕获组和非捕获组的全部内容,希望能对您有所启发。

tag:解决方案正则表达式详细电脑软件php

相关内容