【问题标题】:RegEx for setting IMG src = ""用于设置 IMG src = "" 的正则表达式
【发布时间】:2011-09-08 03:00:04
【问题描述】:

我有原始 HTML,我需要设置所有 IMG src="http://foo"。

这是我目前使用的正则表达式,它似乎有效。在我的环境中,可以安全地假设标签是大写的,属性是小写的。我在.Net 中执行此操作,但我认为该平台在这里并不重要。 \s 是 .Net RegEx 引擎中的任何空格。

有人可以改进吗?

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

【问题讨论】:

    标签: regex


    【解决方案1】:

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

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

    【讨论】:

    • 因此搜索图像标签将是“]*>”,您可以将 src 标签捕获为小写,或者类似的不敏感标签方式。
    【解决方案2】:

    无论如何都不是正则专家,但试试 txt2re.com

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

    【讨论】:

    • 这是学习和使用正则表达式的一个很好的技巧。感谢发帖。
    • 谢谢!很高兴看到 2 年前的评论仍然有用。
    • 页面不存在了。
    【解决方案3】:

    \s+ 可能允许多个空格

    【讨论】:

      【解决方案4】:

      另一种方法是使用 HTML 解析器。 IMO,你最好使用解析器而不是正则表达式来完成这项任务。

      【讨论】:

      • +1。虽然我通常会完全同意这一点,但有时 HTML 解析器不起作用。在我的问题(一个旧问题)的情况下,使用 HTML 解析引擎花费的时间太长了,因为我有很多 HTML 需要在短时间内完成。正则表达式方法明显更快,但不太健壮。但是,OP 中没有说明这一点。
      • 我脑海中的时髦黑客声音说在这种情况下使用并发/MapReduce。或者只是像一个正常的、理智的人一样用 grep 探索!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多