我想匹配所有以此标记结尾的单词“!”:
<div>Why I love! you so much</div>
在这种情况下,我希望匹配爱这个词!因为有 !
现在,我制作了这个漂亮的正则表达式:
(?-s)(<div>)*\w+!(?!\w*;)(?=[^<]*</div>)
替换后,我的标记应如下所示:
<div>Why I love you so much</div>
所以,我想使用这个正则表达式,在几个.html文件中替换所有那些具有 !
Basicaly的标签,我想从这些标签中删除它们 . 我试着替换!一个空的空间,像这样:
搜索: (?-s)(<div>)*\w+!(?!\w*;)(?=[^<]*</div>)
替换为: \1\2(LEAVE EMPTY)
但是不起作用 . 谁能帮我?
基本上,我想从几个文件中删除所有 !
,它们会粘贴这些标记中的单词 .
2 回答
尝试
取而代之
然后
这将被替换为
先删除!在
<div>
标签中 .删除无法立即执行此操作!来自记事本上面示例中的
love!
和so!
,因为它只能在同一行中处理一次,所以不幸的是你必须继续替换,直到找不到为止 . 但你可以编写Python脚本来做到这一点 . 然后只需单击一次即可完成所有文件,甚至文件夹中的所有文件都值得编写,或者更高级的文本编辑器如Vim :)如果编写脚本,可以指定是否要重复处理相同的文件或者只需一次进入相同的行/字符串,这样你就可以做更多的事情 .关于正则表达式,
<([^>]+)>
在示例中表示</div>
,[^>]+
表示“除>
之外的任何内容” . 所以这可以防止<AAA><BBB>
得到AAA><BBB
而不是AAA
因为正则表达式会选择更长的匹配 . 所以<([^>]+)>
是编写HTML标记的一般方法,它也可以匹配像<a href=....>
这样的长HTML标记 .您可以使用纯正则表达式删除粘贴到单词结尾的
!
,然后单击一下搜索并替换按钮:见regex demo . 要在单词和
!
之间插入空格,只需用!
替换即可 .Pattern details
(?:\G(?!^)|<div>)
-<div>
substring(<div>
)或(|
)上次成功匹配的结束(\G(?!^)
)[^<]*?
- 除了<
之外的任何0个字符,尽可能少,因为*?
是一个惰性量词\K
- match reset operator丢弃与匹配缓冲区匹配的所有文本\b
- 一个单词边界(紧靠!
之前,应该有一个单词char)!
-!
\B
- 非字边界(紧跟在!
之后,应该有一个非字的字符串或字符串的结尾) .