Php 如何在preg_match中不匹配括号内的模式

Php 如何在preg_match中不匹配括号内的模式,php,regex,preg-match-all,Php,Regex,Preg Match All,我正在尝试从网页中获取所有图像标记的src。但我不知道如何不匹配括号内的模式。在本例中,gif | jpg | png | jpeg 因此,当打印$img_匹配项时,我得到如下数组: Array ( [0] => Array ( [0] => src="http://s9.addthis.com/button1-bm.gif" [1] => src="http://s9.addthis.com/button1-bm.gif" ) [1] =>

我正在尝试从网页中获取所有图像标记的src。但我不知道如何不匹配括号内的模式。在本例中,gif | jpg | png | jpeg

因此,当打印$img_匹配项时,我得到如下数组:

Array ( 
  [0] => Array ( 
    [0] => src="http://s9.addthis.com/button1-bm.gif" 
    [1] => src="http://s9.addthis.com/button1-bm.gif" ) 
  [1] => Array ( [0] => gif [1] => gif ) 
)
以下是我想要得到的:

Array ( 
  [0] => Array ( 
    [0] => src="http://s9.addthis.com/button1-bm.gif" 
    [1] => src="http://s9.addthis.com/button1-bm.gif" ) 
)

这真的是赛前让我困惑的部分。你能告诉我这一点吗?

你可以忽略它,因为它属于数组中的另一个索引

或者您可以将捕获组模式更改为非捕获组?:模式:

您当前的正则表达式,除了查找与整个正则表达式的匹配项外,还捕获(即记住正则表达式gif | jpg | png | jpeg匹配的文本),这是由于捕获周围的组的效果。非捕获组将保留分组属性,但不会捕获子表达式gif | jpg | png | jpeg匹配的文本


preg_match_all输出一个二维数组,其中第一个维度是捕获组索引0,它将包含与整个正则表达式匹配的文本,第二个维度是它找到的匹配项的id。

您可以忽略它,因为它属于数组中的另一个索引

或者您可以将捕获组模式更改为非捕获组?:模式:

您当前的正则表达式,除了查找与整个正则表达式的匹配项外,还捕获(即记住正则表达式gif | jpg | png | jpeg匹配的文本),这是由于捕获周围的组的效果。非捕获组将保留分组属性,但不会捕获子表达式gif | jpg | png | jpeg匹配的文本

preg_match_all输出一个二维数组,其中第一个维度是捕获组索引0,它将包含与整个正则表达式匹配的文本,第二个维度是它找到的匹配项的id

Array ( 
  [0] => Array ( 
    [0] => src="http://s9.addthis.com/button1-bm.gif" 
    [1] => src="http://s9.addthis.com/button1-bm.gif" ) 
)
'/src="?.+\.(?:gif|jpg|png|jpeg)"/'