html - 使用 RegEx 替换标签的内容

标签 html regex notepad++

我想匹配所有以“!”结尾的单词来自这个标签:

<div>Why I love! you so much</div>

在这种情况下,我要匹配爱这个词!因为有一个 !

现在,我制作了这个漂亮的正则表达式:

(?-s)(<div>)*\w+!(?!\w*;)(?=[^<]*</div>)

替换后,我的标签应该是这样的:

<div>Why I love you so much</div>

所以,我想使用这个正则表达式来替换几个 .html 文件中所有具有 ! 的标签。基本上,我想从这些标签中删除它们。我尝试更换!有一个空白空间,像这样:

搜索:(?-s)(<div>)*\w+!(?!\w*;)(?=[^<]*</div>)

替换为:\1\2(LEAVE EMPTY)

但不起作用。谁能帮帮我?

基本上,我想删除所有!它坚持来自这些标签的单词,来自几个文件。

最佳答案

尝试

(<([^>]+)>[^>]*?[ ]\w+?)\!([^>]*?<\/\2>)

替换为

\1\3

然后

This is not! in tag.

<div>Why I love! you so! much </div> This is not! in tag. <div>Why I love! you so! much </div>

这将被替换成

This is not! in tag.

<div>Why I love you so! much </div>  This is not! in tag. <div>Why I love! you so! much </div>

先删除!在<div>标签。

没有办法一下子删除!来自 love!so!在上面的 Notepad++ 示例中,因为它只能在同一行中处理一次,所以不幸的是,您必须继续替换,直到找不到为止。但你可以编写 Python 脚本来完成它。然后单击一下就可以完成所有文件甚至文件夹中的所有文件,所以值得编写,或者更高级的文本编辑器,如 Vim :) 如果你编写脚本,你可以指定是否要重复处理相同的或只需一次进入同一行/字符串,这样您就可以轻松地做更多的事情。

关于正则表达式, <([^>]+)>代表</div>在示例中,[^>]+意思是“除 > 之外的任何东西”。所以这可以防止 <AAA><BBB>得到 AAA><BBB作为匹配而不是 AAA因为正则表达式选择更长的匹配否则。所以<([^>]+)>是HTML标签的通用写法,可以匹配很长的HTML标签,比如<a href=....>也是。

关于html - 使用 RegEx 替换标签的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48600960/

相关文章:

javascript - 如何仅对 IE 应用 css 样式

javascript - HighChart 图在小 div 上显示不正确

c# - 我希望 REGEX 匹配每个字母之间的点 C#

javascript - 如何在替换对象的循环中替换字符串?

python - 无法使用 Notepad++ 的 NppExec 插件运行 conda 命令 'activate'

notepad++ - 如何在Notepad++中多行 "Replace in files..."

html - OAuth 在 iframe 中不起作用

javascript - 为什么我的 javascript 匹配返回 null?

notepad++ - 如何修复 Notepad++ 中 View 之间的行距

javascript - 使用 websockets 激活 HTML5 模式属性