gpt4 book ai didi

regex - 正则表达式中的前瞻性总是不会捕获还是取决于?

转载 作者:行者123 更新时间:2023-12-04 16:40:28 25 4
gpt4 key购买 nike

我已经在该网站和网络上阅读了一些有关非捕获组的文章
(例如http://www.regular-expressions.info/brackets.htmlhttp://www.asiteaboutnothing.net/regexp/regex-disambiguation.htmlWhat 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"。但是,这些数字不属于匹配组1。

您可以在前瞻性中定义捕获来捕获它。例如,正则表达式:
(X(?=(\d+)))

仅当后面有一个或多个数字时,才匹配 "X"。这些数字被记录在比赛组2中。

一个PHP演示:

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

将打印:

大批
(
[0] =>数组
(
[0] => X
)

[1] =>数组
(
[0] => X
)

[2] =>数组
(
[0] => 123
)

)

关于regex - 正则表达式中的前瞻性总是不会捕获还是取决于?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11435436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com