我在Notepad++中打开一个超文本标记语言页面。
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>
和此标记的内容
发布于 2018-10-11 12:47:58
这个正则表达式应该可以执行您想要的操作。确保选中Replace
选项卡上的. matches newline
框,并将光标定位在文档的开头。
^.*?(<div[^>]*id="issue_content">.*?<\/div>).*$
替换为\1
。
请注意,只有当您要查找的<div>
标记中没有嵌套其他标记时,此代码才会起作用。
发布于 2018-10-11 08:15:34
您可以将正则表达式更改为以下内容:其思想是它匹配所有内容,但创建一个包含所需字符串的Match
Group
,您可以使用该字符串将所有内容替换为您的Group
下面是正则表达式:
/[\s\S]*?(<div id=\"issue_content\">[^>]+>)[\s\S]+/
它将开始时的所有内容都匹配到字符串,然后使用您的字符串创建一个Group,最后匹配之后的所有内容。
替换时,您将替换为Group 1:
$1
现在你只有你的字符串了。
发布于 2018-10-11 08:25:49
试试这个,其中$str
是您的HTML变量。
preg_match('/<div id="issue_content">(.*)<\/div>/i', $str, $matches);
echo $matches[1];
https://stackoverflow.com/questions/52750166
复制相似问题