正则表达式删除除匹配之外的所有内容

时间:2017-12-12 18:29:32

标签: html regex autohotkey

我有一个.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   
---------------------------

2 个答案:

答案 0 :(得分:1)

您可以使用:

查找:.*<!--StartFragment-->(.*)<!--EndFragment-->.*
 替换:$1
 修饰符:gs

请参阅regex101.com

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

答案 1 :(得分:0)

您使用的是notepad ++吗?如果是这样,只需点击Ctrl + H然后执行以下操作:

  • 找到:.*(<b\s[^>]*>.*<\/b>).*
  • 替换为:$1
  • 搜索模式:Regular Expressions
  • 勾选“匹配换行符”
  • 点击“替换”并完成