正则表达式 - 如何在第一次出现角色时停止

时间:2012-07-02 23:44:44

标签: java c# php regex perl

我正在尝试从标记中提取src值, 到目前为止,我似乎能够提取字符串

中src值和最终引号之间的字符串

字符串:

<img  border="0"  src="http://i.bookfinder.com/about/booksellers/logo_borderless/amazon_uk.gif" width="89" height="31" alt="">

e.g。用PHP:

preg_match('/src=\"(.*)\"/', $row->find('a img',0), $matches);
if($matches){
   echo $matches[0];
}

打印 src="http://i.bookfinder.com/about/booksellers/logo_borderless/amazon_uk.gif" width="89" height="31" alt=""

但我真正想要的是...... src="http://i.bookfinder.com/about/booksellers/logo_borderless/amazon_uk.gif"

或者如果可能的话...... http://i.bookfinder.com/about/booksellers/logo_borderless/amazon_uk.gif

我应该在正则表达式中添加什么?感谢

3 个答案:

答案 0 :(得分:10)

你实际上非常接近&gt;&gt;

Yours:        preg_match('/src=\"(.*)\"/',  $row->find('a img',0), $matches);
Correct one:  preg_match('/src=\"(.*?)\"/', $row->find('a img',0), $matches);

添加?您要求匹配.*懒惰,这意味着它会匹配任何内容,直到需要,而不是任何东西,直到可以。如果没有延迟算子,它将停在最后一个双引号"之前,后面是alt="

答案 1 :(得分:6)

对于RegExp:

preg_match('/src="([^"]+)"/', $row->find('a img',0), $matches);
echo $matches[1];

如果我是对的,您正在使用 simple_html_dom_parser 库。如果这是真的,你可以输入:

$row->find('a img',0)->src

答案 2 :(得分:4)

尝试,它应该对您的需求有益

/src=\"[^\"]+\"/