【问题标题】:Regex remove everything except the match正则表达式删除除匹配项之外的所有内容
【发布时间】:2018-05-26 12:42:37
【问题描述】:

我有一个 .ahk,它给了我类似下面的内容。我只想保留包含style 的 HTML 标记内的内容。

在下面的示例中,我只想保留<b style="color: rgb(34, 34, 34)>;"><span>A text </span></b> 并删除前后的所有内容。

此正则表达式与我想要的匹配:(<[b div span p] style=".*">.*<\/.*[div span p b]>) 但我不能只保留此匹配并删除其他所有内容。

我试过用 $2 和 \2 替换,但没有用

匹配:

([.\r\n]*)(<[b div span p] style=".*">.*<\/.*[div span p b]>)([.\r\n]*)

第一组应该匹配从头到尾的所有内容,第三组应该匹配从头到尾的所有内容。 那么我只能保留第二组。

替换:

\2

这是我的尝试:https://regex101.com/r/Bkq0JE/2

---------------------------
ahk html clipboard.ahk
---------------------------
Version:0.9

StartHTML:0000000159

EndHTML:0000002912

StartFragment:0000000195

EndFragment:0000002876

SourceURL:https://en.wikipedia.org/wiki/Genghis_Khan

<html>

<body>

<!--StartFragment--><b style="color: rgb(34, 34, 34)>;"><span>A text </span></b><!--EndFragment-->

</body>

</html>
---------------------------
OK   
---------------------------

【问题讨论】:

    标签: html regex autohotkey


    【解决方案1】:

    你可以用这个:

    查找:.*&lt;!--StartFragment--&gt;(.*)&lt;!--EndFragment--&gt;.*
    替换:$1
    修饰符:gs

    regex101.com

    注意s 修饰符使. 也匹配换行符。如果您碰巧使用notepad++,那么可以使用复选框设置该选项。

    【讨论】:

      【解决方案2】:

      你在使用记事本++吗?如果是这样,只需点击Ctrl + H 然后执行以下操作:

      • 查找内容:.*(&lt;b\s[^&gt;]*&gt;.*&lt;\/b&gt;).*
      • 替换为:$1
      • 搜索模式:Regular Expressions
      • 勾选“匹配换行符”
      • 点击“替换”完成

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 2021-05-26
        • 2022-08-21
        • 2019-11-12
        • 2023-03-08
        相关资源
        最近更新 更多