看了帖子说是表示捕获:
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
?:
是正则表达式中通用的把,Perl,python,java,php等等都是表示不捕获,就是括号只是表示group,不capture。
这种基础问题你随便测试一下就知道了,如果你对正则表达式不是很了解可以看一下Perl的正则介绍perlregexp部分。如上所述,Perl的强大就是在于哈希和正则,其他语言多少是借鉴Perl的,尤其是和Perl很像的PHP。
<?php
$uri = 'http://tieba.baidu.com/p/3563342437';
preg_match("/(?:http:\/\/)([^\/]+)/", $uri, $matched);
var_dump($matched);
结果是
array(2) {
[0]=>
string(22) "http://tieba.baidu.com"
[1]=>
string(15) "tieba.baidu.com"
}
(?:)
的部分并没有被捕获的,如果把?:
去掉,结果是
array(3) {
[0]=>
string(22) "http://tieba.baidu.com"
[1]=>
string(7) "http://"
[2]=>
string(15) "tieba.baidu.com"
}
戒备capture了
1 回答4.2k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答865 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.3k 阅读
https://deerchao.net/tutorial...