素材牛VIP会员
php 正则中(?:http://)中?:表示什么意思呢?
 in***ex  分类:PHP代码  人气:715  回帖:3  发布于6年前 收藏

看了帖子说是表示捕获:
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

 标签:正则表达式php

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv6 码匠
天***月 职业无 6年前#1

?:是正则表达式中通用的把,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了

Lv6 码匠
阿***6 Linux系统工程师 6年前#2

https://deerchao.net/tutorial...

Lv5 码农
霸***解 Linux系统工程师 6年前#3

早上刚回答了一个,参考一下

正则表达式中的?:是什么意思?

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取