PHP正则表达式返回2个相同字符串的数组
考虑以下字符串和正则表达式:PHP正则表达式返回2个相同字符串的数组,php,regex,Php,Regex,考虑以下字符串和正则表达式: $string = 'xxx-zzzzzz-xxx'; preg_match('/(?<=xxx-)(.*)(?=-xxx)/', $string, $extract); var_dump($extract); 既然匹配的字符串只出现一次,为什么数组大小为2?我该怎么做才能得到一个字符串或一个包含1个字符串的数组?提前感谢。索引=0是完整匹配,而索引=1是第一个捕获的组。如果您不希望捕获组,则只需使用: /(?<=xxx-).*(?=-xxx)/
$string = 'xxx-zzzzzz-xxx';
preg_match('/(?<=xxx-)(.*)(?=-xxx)/', $string, $extract);
var_dump($extract);
既然匹配的字符串只出现一次,为什么数组大小为2?我该怎么做才能得到一个字符串或一个包含1个字符串的数组?提前感谢。
索引=0
是完整匹配,而索引=1
是第一个捕获的组。如果您不希望捕获组,则只需使用:
/(?<=xxx-).*(?=-xxx)/
/(?index=0
是完整匹配,而index=1
(及以上)是第一个捕获的组。如果您不想要捕获的组,则只需使用:
/(?<=xxx-).*(?=-xxx)/
/(?来自:
如果提供了$matches
,则它将填充搜索结果。
$matches[0]
将包含与完整模式匹配的文本,
$matches[1]
将包含与第一次捕获的文本匹配的文本
括号中的子模式,依此类推
换句话说,匹配[0]
返回完全匹配,数组中的其他键只返回部分匹配(等于正则表达式中使用的()
的数目)
请记住,preg_match将只匹配一个完整的结果;如果要返回给定字符串中的所有匹配项,请查看。来自:
如果提供了$matches
,则它将填充搜索结果。
$matches[0]
将包含与完整模式匹配的文本,
$matches[1]
将包含与第一次捕获的文本匹配的文本
括号中的子模式,依此类推
换句话说,匹配[0]
返回完全匹配,数组中的其他键只返回部分匹配(等于正则表达式中使用的()
的数目)
请记住,preg_match将只匹配一个完整的结果;如果要返回给定字符串中的所有匹配项,请查看
preg_match('/(?<=xxx-).*(?=-xxx)/', $string, $extract);
print_r($extract);