2009-08-10 66 views
0

我有原始HTML,我需要设置所有IMG src =“http:// foo”。用于设置IMG的RegEx src =“”

这是我到目前为止的RegEx,它似乎工作。在我的环境中,假设标记是大写字母而属性是小写字母是安全的。我在.Net中这样做,但我认为这个平台并不重要。 \ s是.Net RegEx引擎中的任何空格。

有人可以改进它吗?

Regex.Replace(htmlText, "(<IMG[^>]*\\ssrc=\")([^\"]*)(\"[^>]*>)", "$1http://foo$3") 

回答

1

不是regexpert以任何手段,但尽量txt2re.com

也许这将让你开始:http://txt2re.com/index-ruby.php3?s=%3CIMG%20src=%22http://foo.bar/baz.jpg%22%20/%3E&1

+0

这是学习和使用正则表达式的绝佳技巧。感谢发布。 – reporter 2011-09-05 14:36:58

+0

谢谢!很高兴看到一个2岁的评论仍然有用。 – user94154 2011-09-05 16:18:09

+0

一个很好的学习新东西的教程永远不会过期;-) – reporter 2011-09-06 08:20:14

0

也许允许多个空格与\s+

2

匹配整个IMG首先标记,然后匹配src="([^\"]*)"属性,替换它,仅为src =“...”部分提供替换字符串。

然后,您可以使用原始匹配,然后搜索整个标签,并将其替换为整个标签。

+0

因此,对图像标签的搜索将是“<[Ii] [Mm] [Gg] [^>] *>”,您可以将src标签捕获为小写或不相似的方式。 – maxwellb 2009-08-10 19:23:46

0

另一种方法是使用HTML解析器。国际海事组织,你使用解析器比正则表达式更适合这项任务。

+0

+1。尽管我通常会完全同意这一点,但有时候,HTML解析器不起作用。在我的问题(旧的)中,使用HTML解析引擎的时间太长了,因为我有很多HTML需要在短时间内完成。正则表达式方法明显更快,但不太健壮。然而,这在OP中没有指出。 – 2011-09-07 22:11:29

+0

我脑海中的时髦黑客声音说在这种情况下使用并发/ MapReduce。或者就像一个正常的,理智的人一样grep grep! – user94154 2011-09-08 02:17:18