作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在该网站和网络上阅读了一些有关非捕获组的文章
(例如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"
。但是,这些数字不属于匹配组1。
(X(?=(\d+)))
"X"
。这些数字被记录在比赛组2中。
<?php
$s = 'X123';
preg_match_all('/(X(?=(\d+)))/', $s, $matches);
print_r($matches);
?>
关于regex - 正则表达式中的前瞻性总是不会捕获还是取决于?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11435436/
我是一名优秀的程序员,十分优秀!