修改正则表达式匹配值

时间:2011-11-07 20:10:31

标签: c# regex

我想在我的html中找到所有图片代码,其中src不包含http://,并在http://属性前加src

我有正则表达式找到所有不以http://开头的img标签。我在将http://单独应用于src属性时遇到了一些麻烦。如何使用正则表达式替换来实现此目的。

<img [^<]*src="(?!http://)(?<source>[^"]*)"[^<]*/>

Source将包含src值。我只需要说$2 = "http://" + $2。我怎么能用c#代码写这个。

1 个答案:

答案 0 :(得分:2)

由于您不想破坏现有标签,因此您需要将组分配给您不感兴趣的字符串部分;为了能够在替换模式中包含匹配的那些部分:

(<img [^<]*src=")(?!http://)(?<source>[^"]*)("[^<]*/>)

然后替换是微不足道的:

regex.Replace(input, "$1http://$3$2");

(另外,这可能适用于您的应用程序用例,但我应该提及,that in general it is not considered a good idea to parse HTML with regex