【问题标题】:Regex, Remove text NOT between tags正则表达式,删除标签之间的文本
【发布时间】:2019-03-13 11:58:22
【问题描述】:

我需要删除所有不在标签<p></p> 之间的文本。每个单元格中可以有许多<p> 标签。 <p>之前和</p>之后的内容在每一行都不一样。

例子

<h1>Curly Krans Daggdroppar 30cm LED</h1><h2>Beskrivning</h2><div id="more_info_sheets" class="sheets align_justify"><div id="idTab1" class="rte"><div id="more_info_sheets" class="sheets align_justify"><div id="idTab1" class="rte"><p>En krans med en snygg och intressant design. </p><p>Kransen har 30st ej utbytbara små LED lampor.</p><p>Finns i tre olika färger, välj mellan, koppar, mässing och krom.</p></div></div></div></div>

应该是

<p>En krans med en snygg och intressant design. </p><p>Kransen har 30st ej utbytbara små LED lampor.</p><p>Finns i tre olika färger, välj mellan, koppar, mässing och krom.</p>

有人知道怎么做吗?

【问题讨论】:

  • 你想达到什么目的?你的环境是什么?你想如何删除它?
  • 我想删除所有 H1 和 H2 文本以及所有 div 标签。需要在 Notepad++ 或 Excel 中从 .csv 文件中完成。我的目标是只获得带有 p 标记的干净文本。
  • 我可以使用 ^.*?(?=

    ) 删除第一个

    之前的所有内容,但是如何删除最后一个之后的所有内容

  • 所以 stalk 正则表达式响应不是在标记上使用正则表达式。有更好的工具,例如 xPath。

标签: regex excel notepad++


【解决方案1】:

您可以使用匹配表达式仅捕获所需的组

标签而不是替换文本的其余部分。然而,这是正则表达式的另一种选择:

匹配所有 p 组

<p>.*<\/p>

分别匹配每个 p 组

<p>.*?<\/p>

匹配非 p 组

(^.*?(?=<p>))|((?<=<\/p>)<[^p].*)

【讨论】:

    最近更新 更多