我想匹配所有以“!”结尾的单词来自这个标签:
<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/