数码资讯
PHP正则表达式的捕获和非捕获组
我遇到了一个正则匹配问题,突然捕获组的概念,手册是一个略,百度意外转向C和java #定期捕获组的特殊用法,PHP不搜索关键词相关的内容,自己的尝试,它是PHP可行,所以总结,分享,也希望会有巨大的和仔细的学习者发现我对问题的理解。 什么是捕获组 捕获组语法: 性格 描述 样品 (模式) 模式,并捕
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
我遇到了一个正则匹配问题,突然捕获组的概念,手册是一个略,百度意外转向C和java #定期捕获组的特殊用法,PHP不搜索关键词相关的内容,自己的尝试,它是PHP可行,所以总结,分享,也希望会有巨大的和仔细的学习者发现我对问题的理解。
什么是捕获组
捕获组语法:
性格
描述
样品
(模式)
模式,并捕获结果,自动设置号码。
(abc)+ D
比赛或abcabcd ABCD
(模式)
或
('name'pattern)
匹配模式并捕获结果,并将名称设置为组名称。
嗯
对捕获组的反向引用。Num是一个正整数。
((w)() 2 1
比赛啊
◎K
或
k'name
对命名捕获组的反向引用。名称是捕获组的名称。
()ABC
比赛xabcx
让我们来看看PHP的正则匹配函数。
国际preg_match(字符串的模式字符串$ {数组$matches { int,int = 0美元标志{,} } }偏移= 0美元)
前两个项目是我们经常使用的,$模式是一个规则匹配模式,$字符串是匹配的字符串。
数组$匹配,这是一个数组,表示匹配的结果被写入到$匹配中。
如果int标记传递此标记,则字符串匹配器(相对于目标字符串)附加到出现的每个匹配项中。
int偏移量用于从目标字符串指定一个未知的开始搜索(单位是字节)。
让我们看看匹配的值是多少。
元模式= (=);
$str =××= 4b = 98c = 56××;
RES = preg_match美元(美元模式,$str,$匹配);
var_dump($匹配);
结果如下:
数组(大小= 4)
0 = string'a = 4b = 98c = 56(长度= 11)
1 =字符串'(长度= 1)
2 =字符串98(长度= 2)
3 =字符串'56(长度= 2)
现在我们知道了捕获组是什么,捕获组是正则表达式()的一部分,每个对()是一个捕获组。
PHP将从1开始对它进行编号,至于为什么从1开始,这是因为PHP将匹配0的完整字符串编号。
如果有多个圆括号或嵌套圆括号,则该数字按左括号的顺序编号,如图中所示:
根据123组红蓝组的匹配模式。
对捕获组的忽略和命名
我们还可以防止PHP作为匹配组号:在匹配组中添加模式:
元模式= (=);
这样,匹配的结果就会变成:
数组(大小= 3)
0 = string'a = 4b = 98c = 56(长度= 11)
1 =字符串'(长度= 1)
2 =字符串'56(长度= 2)
当然,我们也可以在括号的内部给它一个唯一的名字。
指定的分组可以接受(),('name')和(P)的语法。上一版本只接受(p)语法。
例如:$ =(=);
结果如下:
数组(大小= 5)
0 = string'a = 4b = 98c = 56(长度= 11)
1 =字符串'(长度= 1)
秒= >字符串98(长度= 2)
2 =字符串98(长度= 2)
3 =字符串'56(长度= 2)
在保存索引数组时,添加一个关联项,而键值是捕获组名。
捕获组的反向引用
当我们使用preg_replace()定期更换的功能,我们也可以使用或n引用n捕获组。
元模式= (=);
$str =××= 4b = 98c = 56××;
$ = 1 2美元3;
回声preg_replace(合模式,为RP,$str); / / * 4 / 98 / 56 / / * *
1表示捕获组为1(4),捕获组为2(98),捕获组为3(56);捕获组为2。
非捕获组的用法:
非捕获组语法:
性格
描述
样品
(::模式)
匹配模式,但不捕获匹配结果。
工业(:Y | IES)
match'industry'or'industries。
(=模式)
零宽度正prelooking,和匹配的结果没有被捕获。
Windows(= 95 | 98 | NT | 2000)
匹配窗口Windows2000
不匹配的窗口以上。
(!模式)!
零宽度进行预检,并匹配结果没有被捕获。
窗口!95 | 98 | NT | 2000)
匹配窗口以上
不匹配的窗口Windows2000。
(<模式)
零宽度是向前向后看的,匹配结果不会被捕获。
2000(<=办公室|字| Excel)
匹配2000在Office2000
不匹配2000 Windows2000。
(<<!模式)
零宽度负反检查,没有匹配结果不被捕获。
2000(<!办公室|字| Excel)
匹配2000中的系统
不匹配2000 Office2000。
为什么称为非捕获组这是因为它们在匹配模式下具有捕获组的特性,但是在匹配时,PHP不会对它们进行编组,它们只会影响匹配结果,而不会输出结果。
(= xxx)匹配xxx稍后的数量。
注释格式:仅在匹配模式字符串之后!
例如:
模式=;
$str =ab36abc8eg ;
RES = preg_match美元(美元模式,$str,$匹配);
var_dump($匹配); / / 6
这场比赛是6场,因为只有一个号码,后面还有一个ABC。
在XXX前面匹配一个数字
注意格式:仅在匹配模式字符串之前!
例如:
$ = (< abc);
$str =ab36abc8eg ;
RES = preg_match美元(美元模式,$str,$匹配);
var_dump($匹配); / / 8
这场比赛是8场,因为只有一个号码,后面还有一个ABC。
相对于(= xxx)(< = xxx)是(!= XXX)(<!= xxx),并在非!
它表示前面的/后面不是xxx的字符串,它不再是一个例子。
如果你觉得Moto Hirofumi对你是有帮助的,你可以推荐或关注我,如果你有任何问题,你可以留言在下面,谢谢。
什么是捕获组
捕获组语法:
性格
描述
样品
(模式)
模式,并捕获结果,自动设置号码。
(abc)+ D
比赛或abcabcd ABCD
(模式)
或
('name'pattern)
匹配模式并捕获结果,并将名称设置为组名称。
嗯
对捕获组的反向引用。Num是一个正整数。
((w)() 2 1
比赛啊
◎K
或
k'name
对命名捕获组的反向引用。名称是捕获组的名称。
()ABC
比赛xabcx
让我们来看看PHP的正则匹配函数。
国际preg_match(字符串的模式字符串$ {数组$matches { int,int = 0美元标志{,} } }偏移= 0美元)
前两个项目是我们经常使用的,$模式是一个规则匹配模式,$字符串是匹配的字符串。
数组$匹配,这是一个数组,表示匹配的结果被写入到$匹配中。
如果int标记传递此标记,则字符串匹配器(相对于目标字符串)附加到出现的每个匹配项中。
int偏移量用于从目标字符串指定一个未知的开始搜索(单位是字节)。
让我们看看匹配的值是多少。
元模式= (=);
$str =××= 4b = 98c = 56××;
RES = preg_match美元(美元模式,$str,$匹配);
var_dump($匹配);
结果如下:
数组(大小= 4)
0 = string'a = 4b = 98c = 56(长度= 11)
1 =字符串'(长度= 1)
2 =字符串98(长度= 2)
3 =字符串'56(长度= 2)
现在我们知道了捕获组是什么,捕获组是正则表达式()的一部分,每个对()是一个捕获组。
PHP将从1开始对它进行编号,至于为什么从1开始,这是因为PHP将匹配0的完整字符串编号。
如果有多个圆括号或嵌套圆括号,则该数字按左括号的顺序编号,如图中所示:
根据123组红蓝组的匹配模式。
对捕获组的忽略和命名
我们还可以防止PHP作为匹配组号:在匹配组中添加模式:
元模式= (=);
这样,匹配的结果就会变成:
数组(大小= 3)
0 = string'a = 4b = 98c = 56(长度= 11)
1 =字符串'(长度= 1)
2 =字符串'56(长度= 2)
当然,我们也可以在括号的内部给它一个唯一的名字。
指定的分组可以接受(),('name')和(P)的语法。上一版本只接受(p)语法。
例如:$ =(=);
结果如下:
数组(大小= 5)
0 = string'a = 4b = 98c = 56(长度= 11)
1 =字符串'(长度= 1)
秒= >字符串98(长度= 2)
2 =字符串98(长度= 2)
3 =字符串'56(长度= 2)
在保存索引数组时,添加一个关联项,而键值是捕获组名。
捕获组的反向引用
当我们使用preg_replace()定期更换的功能,我们也可以使用或n引用n捕获组。
元模式= (=);
$str =××= 4b = 98c = 56××;
$ = 1 2美元3;
回声preg_replace(合模式,为RP,$str); / / * 4 / 98 / 56 / / * *
1表示捕获组为1(4),捕获组为2(98),捕获组为3(56);捕获组为2。
非捕获组的用法:
非捕获组语法:
性格
描述
样品
(::模式)
匹配模式,但不捕获匹配结果。
工业(:Y | IES)
match'industry'or'industries。
(=模式)
零宽度正prelooking,和匹配的结果没有被捕获。
Windows(= 95 | 98 | NT | 2000)
匹配窗口Windows2000
不匹配的窗口以上。
(!模式)!
零宽度进行预检,并匹配结果没有被捕获。
窗口!95 | 98 | NT | 2000)
匹配窗口以上
不匹配的窗口Windows2000。
(<模式)
零宽度是向前向后看的,匹配结果不会被捕获。
2000(<=办公室|字| Excel)
匹配2000在Office2000
不匹配2000 Windows2000。
(<<!模式)
零宽度负反检查,没有匹配结果不被捕获。
2000(<!办公室|字| Excel)
匹配2000中的系统
不匹配2000 Office2000。
为什么称为非捕获组这是因为它们在匹配模式下具有捕获组的特性,但是在匹配时,PHP不会对它们进行编组,它们只会影响匹配结果,而不会输出结果。
(= xxx)匹配xxx稍后的数量。
注释格式:仅在匹配模式字符串之后!
例如:
模式=;
$str =ab36abc8eg ;
RES = preg_match美元(美元模式,$str,$匹配);
var_dump($匹配); / / 6
这场比赛是6场,因为只有一个号码,后面还有一个ABC。
在XXX前面匹配一个数字
注意格式:仅在匹配模式字符串之前!
例如:
$ = (< abc);
$str =ab36abc8eg ;
RES = preg_match美元(美元模式,$str,$匹配);
var_dump($匹配); / / 8
这场比赛是8场,因为只有一个号码,后面还有一个ABC。
相对于(= xxx)(< = xxx)是(!= XXX)(<!= xxx),并在非!
它表示前面的/后面不是xxx的字符串,它不再是一个例子。
如果你觉得Moto Hirofumi对你是有帮助的,你可以推荐或关注我,如果你有任何问题,你可以留言在下面,谢谢。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。