【问题标题】:How to remove everything except html tag and content of this HTML tag in notepad++?如何在记事本++中删除除html标签和此HTML标签内容之外的所有内容?
【发布时间】:2018-10-10 23:37:34
【问题描述】:

我在 Notepad++ 中打开一个 HTML 页面。

html页面有很多东西,尤其是这个标签:

<div id="issue_content">CONTENT</div>

我想从 html 文件中删除所有内容,除了 此标签及其内容:

<div id="issue_content">CONTENT</div>

文件示例:

<p>ewrfefsd</p>
<div id="issue_content">CONTENT</div>
<p>ewrfefsd</p>
</html>

删除后,文件内容应该是这样的:

<div id="issue_content">CONTENT</div>

我尝试使用正则表达式: (&lt;div id=\"issue_content\"&gt;)(.*?)(&lt;\/div&gt;)(.*?)
, 但是这个正则表达式只删除标签&lt;div id="issue_content"&gt;CONTENT&lt;/div&gt;和这个标签的内容

【问题讨论】:

  • 为什么不创建一个包含该内容的新字符串,因为这就是您感兴趣的全部内容?您已经有了匹配值。
  • 我需要删除 3000 个 html 文件中不必要的内容。
    DIFFERENT CONTENT
    标签中的内容不同

标签: html notepad++


【解决方案1】:

这个正则表达式应该做你想做的事。确保选中 Replace 选项卡上的 . matches newline 框,并将光标放在文档的开头。

^.*?(<div[^>]*id="issue_content">.*?<\/div>).*$

替换为\1

请注意,只有在您要查找的代码中没有嵌套其他 &lt;div&gt; 标记时,此代码才有效。

【讨论】:

    【解决方案2】:

    您可以将您的正则表达式更改为以下内容:这个想法是它匹配所有内容,但会创建一个 Match Group,其中包含您想要的字符串,您可以使用它来将所有内容替换为您的 Group:

    这是正则表达式:

    /[\s\S]*?(<div id=\"issue_content\">[^>]+>)[\s\S]+/
    

    它在开始时匹配所有内容,直到你想要的字符串,然后它用你的字符串创建一个组,最后匹配之后的所有内容。

    替换时,你用Group 1替换:

    $1
    

    现在你只有你的字符串了。

    【讨论】:

    • /[\s\S]*?(
      [^>]+>)[\s\S]+/ - 不工作 (( (
    • @alexbever:删除分隔符
    【解决方案3】:

    试试这个,$str 是您的 HTML 内容变量。

    preg_match('/<div id="issue_content">(.*)<\/div>/i', $str, $matches);
    
    echo $matches[1];
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签