正则表达式组捕获问题

时间:2010-06-18 20:02:56

标签: c# html regex

如果我在其中间的某个地方有一个包含它的html字符串:

<img src="http://images.domain.com/Images/hello.jpg" alt="Failed to Load" />

为了获取图像文件的名称,我将使用什么正则表达式?即hello.jpg

目前我正在使用它:

(?<front>.*<img.*src="http://images.domain.com/Images/)(?<imgName>.*)"(?<end>.*)

但是,它为imgName组找到的值是:

hello.jpg" alt="Failed to Load

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

最简单的解决方法是让imgName组匹配除引号之外的任何内容,方法是将。*更改为[^“] *:

(?<front>.*<img.*src="http://images.domain.com/Images/)(?<imgName>[^"]*)"(?<end>.*)

答案 1 :(得分:2)

请参阅why you shouldn't be trying this

无论如何,请尝试(?<imgName>.*?)