【问题标题】:How to use Regex to Find & Replace html table tags?如何使用正则表达式查找和替换 html 表格标签?
【发布时间】:2009-11-22 14:28:44
【问题描述】:

我有如下代码块:

<table border="0"><tr><td><img src='http://profile.ak.fbcdn.net/object3/686/9/q142163634919_249.jpg'/>&nbsp;&nbsp;</td><td>Gift of Life Marathon Blood Drive - "the group stood before a sea of 1,000 Long Trail Brewing Co. pint glasses..." (Rutland Herald, VT)</td></tr></table>

我需要查找并替换除 http://profile.ak.fbcdn.net/object3/686/9/q142163634919_249.jpg 之外的所有内容。所以最后,它应该只是 url。

唯一与循环不同的值是 url 和第二组 td 标记中的描述。描述中的字符数并不总是相同的。

我得到了 Regex Buddy,昨晚看了几个小时的参考网站。匹配单个字符似乎很简单,但我想我需要一段时间才能弄清楚。

我相信有不同类型的 RegEx。我正在使用的是 Yahoo Pipes,不确定它是什么类型:http://pipes.yahoo.com/pipes/pipe.edit?_id=436a316234281be629d357bbecae46b1

【问题讨论】:

    标签: regex pipe yahoo-pipes


    【解决方案1】:

    如果您的 html 看起来与上面完全一样,那应该很容易:
    img src='([^']*)'
    () 表示这将存储在一个特殊的结果中。所以不要看正则表达式匹配什么,而是看结果变量。
    [^']* 匹配除“'”以外的所有字符。

    ...而且我认为您不需要 HTML 解析器来完成此任务。仅当您想创建真正健壮的代码时:-)

    【讨论】:

    • 不确定我是否正确实现了这一点,但我尝试将 img src='([^']*)' 替换为 [nothing] 并得到以下输出:
      </>   Gift of Life Marathon Blood Drive - “这群人站在 1,000 个 Long Trail Brewing Co. 品脱玻璃的海洋前……”(拉特兰先驱报, VT)
      - 我也尝试用 img src='([^']*) 替换 [nothing] 但没有产生任何变化。不过我想通了。请参阅下面的解决方案。
    【解决方案2】:

    我强烈建议使用 HTML 解析器。 HTML 不是常规的,因此使用正则表达式进行解析很容易出现错误、边缘情况等。

    【讨论】:

    • 当您需要创建强大的商业软件时,HTML 解析器非常好用,但这也意味着您不使用 yahoo 管道,也不解析尚未生成的 HTML自己。建议一个 HTML 解析器来帮助解决这个问题会很好......
    • 我主要关注健壮性。商业与否,既不存在也不存在
    【解决方案3】:

    Pipes 是一种略有不同的野兽。因为我是新手,所以我最终创建了 3 个单独的查找和替换规则,以将代码简化为基本 url:

    将 ^.*= 替换为 [nothing]

    这就离开了:

    'http://profile.ak.fbcdn.net/object3/686/9/q142163634919_249.jpg'/&gt;&nbsp;&nbsp; Gift of Life Marathon Blood Drive - "the group stood before a sea of 1,000 Long Trail Brewing Co. pint glasses..." (Rutland Herald, VT)
    

    替换 .与[无]

    这只是删除了开头的 '。

    将 '.* 替换为 [nothing]

    这会删除以 ' 开头的 jpg 之后的所有内容

    最终结果:http://profile.ak.fbcdn.net/object3/686/9/q142163634919_249.jpg

    我确信有一种方法可以将这 3 条规则合二为一,但是当我尝试这样做时出现错误。这是有效的,并且始终如一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2010-10-01
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多