【问题标题】:REGEX: Remove everything except ALL images正则表达式:删除除所有图像之外的所有内容
【发布时间】:2016-12-02 17:20:22
【问题描述】:

我想知道如何使用正则表达式删除所有图像标签以外的所有内容。

这些我已经试过了:

(?s)^[^(.) -> 删除img标签前的所有文字

(?s)^([^>]+>).* -> 删除img标签后的所有文字

有人知道如何将这两个组合成多张图片吗?

以下是我想要应用的内容示例:

Text text text. <img alt="alt text" src="path/to-image.png" />Text text text. <img alt="alt text" src="path/to-image.png" />Text text text. <img alt="alt text" src="path/to-image.png" />Text text text. <img alt="alt text" src="path/to-image.png" />

我想要的结果应该是:

<img alt="alt text" src="path/to-image.png" /><img alt="alt text" src="path/to-image.png" /><img alt="alt text" src="path/to-image.png" /><img alt="alt text" src="path/to-image.png" />

【问题讨论】:

    标签: regex


    【解决方案1】:

    您的示例表达式不适用于我。但是,将“删除除所有图像标签之外的所有内容”变为“仅提取图像标签”,您就可以轻松获得所需的内容:

    <img [^>]*\/> <!-- EDIT: XHTML only -->
    <img [^>]*\/?> <!-- covers HTML and XHTML -->
    

    试试:http://www.regexr.com/3eq09

    【讨论】:

    • &lt;img src="&gt;&gt;&gt;.png" /&gt;。顺便说一句,可以提取所有图像标签,因为它们没有结束标签。
    • 不是/&gt;,而是/?&gt;
    • 给定的示例是在 XHTML 中的,所以我似乎将表达式限制在它上面是合适的,这也有助于在处理属性值中的“>”时细化表达式。跨度>
    • 对于 xhtml 来说好像没问题。但我看不出有什么理由认为这个问题是关于 xhtml 的。
    • 示例代码有 而不是 。当然,要将它概括为 HTML 和 XHTML,使用 ]*\/?> 是合适的。我将此添加到解决方案中。
    猜你喜欢
    • 2017-08-24
    • 2019-04-15
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多