正则表达式 – 正则表达式中的前瞻总是不会捕获它还是依赖它?
发布时间: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 ) ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |