php – 正则表达式量化捕获
发布时间:2020-12-13 17:11:14 所属栏目:PHP教程 来源:网络整理
导读:php preg_match("@/m(/[^/]+)+/t/?@","/m/part/other-part/t",$m);php var_dump($m);array(2) { [0]= string(20) "/m/part/other-part/t" [1]= string(11) "/other-part"}php preg_match_all("@/m(/[^/]+)+/t/?@",$m);php var_dump($m);array(2) { [0]= arra
php > preg_match("@/m(/[^/]+)+/t/?@","/m/part/other-part/t",$m); php > var_dump($m); array(2) { [0]=> string(20) "/m/part/other-part/t" [1]=> string(11) "/other-part" } php > preg_match_all("@/m(/[^/]+)+/t/?@",$m); php > var_dump($m); array(2) { [0]=> array(1) { [0]=> string(20) "/m/part/other-part/t" } [1]=> array(1) { [0]=> string(11) "/other-part" } } 通过上述示例,我希望捕获匹配/ part和/ other-part,遗憾的是regex / m(/ [^ /])/ t /?不像我期望的那样捕捉到两者. 此捕获不应仅限于匹配此样本,它应捕获捕获组的未定义重复次数;例如/米/部件/等部位/和另一个/多/吨 更新: 解决方法
试试这个:
preg_match_all("@(?:/m)?/([^/]+)(?:/t)?@","/m/part/other-part/another-part/t",$m); var_dump($m); 它给: array(2) { [0]=> array(3) { [0]=> string(7) "/m/part" [1]=> string(11) "/other-part" [2]=> string(15) "/another-part/t" } [1]=> array(3) { [0]=> string(4) "part" [1]=> string(10) "other-part" [2]=> string(12) "another-part" } } //编辑 IMO做你想做的最好的方法是使用来自@stema的preg_match()并使用/爆炸结果得到你想要的部分列表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |