加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 正则表达式中的前瞻总是不会捕获它还是依赖它?

发布时间:2020-12-13 21:52:55 所属栏目:百科 来源:网络整理
导读:我一直在这个网站和网上阅读一些关于非捕获组的文章 (例如 http://www.regular-expressions.info/brackets.html和 http://www.asiteaboutnothing.net/regexp/regex-disambiguation.html,What does the “?:^” regular expression mean?,What is a non-captu
我一直在这个网站和网上阅读一些关于非捕获组的文章
(例如 http://www.regular-expressions.info/brackets.html和 http://www.asiteaboutnothing.net/regexp/regex-disambiguation.html,What does the “?:^” regular expression mean?,What is a non-capturing group? What does a question mark followed by a colon (?:) mean?)

我很清楚(?:foo)的含义.我不清楚的是(?= foo). (?= foo)也总是非捕获组,还是依赖?

不,(?= foo)不会捕获“foo”.任何环顾四周的断言(负面和正面向前看和向后看)都不会捕获,而只会检查文本的存在(或不存在).

例如,正则表达式:

(X(?=d+))

仅当“X”后面有一个或多个数字时才匹配“X”.但是,这些数字不是匹配组1的一部分.

您可以在前瞻中定义捕获以捕获它.例如,正则表达式:

(X(?=(d+)))

仅当“X”后面有一个或多个数字时才匹配“X”.并且这些数字在匹配组2中捕获.

一个PHP演示:

<?php
$s = 'X123';
preg_match_all('/(X(?=(d+)))/',$s,$matches);
print_r($matches);
?>

将打印:

Array
(
    [0] => Array
        (
            [0] => X
        )

    [1] => Array
        (
            [0] => X
        )

    [2] => Array
        (
            [0] => 123
        )

)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读