如何在记事本++中删除除html标签和此HTML标签内容之外的所有内容?
Posted
技术标签:
【中文标题】如何在记事本++中删除除html标签和此HTML标签内容之外的所有内容?【英文标题】:How to remove everything except html tag and content of this HTML tag in notepad++? 【发布时间】: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>
我尝试使用正则表达式:
(<div id=\"issue_content\">)(.*?)(<\/div>)(.*?)
,
但是这个正则表达式只删除标签<div id="issue_content">CONTENT</div>
和这个标签的内容
【问题讨论】:
为什么不创建一个包含该内容的新字符串,因为这就是您感兴趣的全部内容?您已经有了匹配值。 我需要删除 3000 个 html 文件中不必要的内容。 DIFFERENT CONTENT 标签中的内容不同 【参考方案1】:这个正则表达式应该做你想做的事。确保选中 Replace
选项卡上的 . matches newline
框,并将光标放在文档的开头。
^.*?(<div[^>]*id="issue_content">.*?<\/div>).*$
替换为\1
。
请注意,只有在您要查找的代码中没有嵌套其他 <div>
标记时,此代码才有效。
【讨论】:
【参考方案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];
【讨论】:
以上是关于如何在记事本++中删除除html标签和此HTML标签内容之外的所有内容?的主要内容,如果未能解决你的问题,请参考以下文章