我需要在特定div中用h3批量替换h2标签。示例:
<div class="txt_contenu">
<h2 style="text-align: justify;">blabla title</h2>
<p style="text-align: justify;"> </p>
<p>Lorem ipsum <strong>dolor</strong> sit amet.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">blabla title 2</h2>
<p style="text-align: justify;"> </p>
<p>other text example</p>
</div>
应成为:
<div class="txt_contenu">
<h3 style="text-align: justify;">blabla title</h3>
<p style="text-align: justify;"> </p>
<p>Lorem ipsum <strong>dolor</strong> sit amet.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">blabla title 2</h3>
<p style="text-align: justify;"> </p>
<p>other text example</p>
</div>
我不太擅长正则表达式,这不是我的代码,我正在使用notepad ++来完成这项工作,但找不到有效的解决方案...
所以,如果有人有一个易于实现的解决方案(我需要在许多html文件上执行此操作),我将非常感谢。 谢谢。
我已经尝试过此正则表达式:
(<div class=\"txt_contenu\">.*?)(h2)(.*?)(</div>)
,并尝试在记事本++中替换为$ 1h3 $ 3 它可以工作,但只针对div内的第一个h2 ...
答案 0 :(得分:0)
尝试以下正则表达式/过程:
Wrap around
(重要的是,我们会让notepad ++崩溃)((?:^|</div>)[\s\S]*?<div[ ]class="txt_contenu">)|\G((?:(?!</div>)[\s\S])*?)<h2([\s\S]*?)</h2>
(?1\1)(?3\2<h3\3</h3>)
注意:只要<div class="txt_contenu">
如果您可以在<div class="txt_contenu">
(嵌套)中找到其他div,则可以编写一个包含宏的解决方案。请让我知道是否是这种情况。
测试输入:
<h2>foobar</h2>
<div class="whatever">
<h2>foobar</h2>
</div>
<div class="txt_contenu">
<h2 style="text-align: justify;">blabla title</h2>
<p style="text-align: justify;"> </p>
<p>Lorem ipsum <strong>dolor</strong> sit amet.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">blabla title 2</h2>
<p style="text-align: justify;"> </p>
<p>other text example</p>
</div>
<h2>foobar</h2>
<div class="whatever">
<h2>foobar</h2>
</div>
<div class="txt_contenu">
<h2 style="text-align: justify;">blabla title</h2>
<p style="text-align: justify;"> </p>
<p>Lorem ipsum <strong>dolor</strong> sit amet.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">blabla title 2</h2>
<p style="text-align: justify;"> </p>
<p>other text example</p>
</div>
<h2>foobar</h2>
<div class="whatever">
<h2>foobar</h2>
</div>
测试输出:
<h2>foobar</h2>
<div class="whatever">
<h2>foobar</h2>
</div>
<div class="txt_contenu">
<h3 style="text-align: justify;">blabla title</h3>
<p style="text-align: justify;"> </p>
<p>Lorem ipsum <strong>dolor</strong> sit amet.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">blabla title 2</h3>
<p style="text-align: justify;"> </p>
<p>other text example</p>
</div>
<h2>foobar</h2>
<div class="whatever">
<h2>foobar</h2>
</div>
<div class="txt_contenu">
<h3 style="text-align: justify;">blabla title</h3>
<p style="text-align: justify;"> </p>
<p>Lorem ipsum <strong>dolor</strong> sit amet.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">blabla title 2</h3>
<p style="text-align: justify;"> </p>
<p>other text example</p>
</div>
<h2>foobar</h2>
<div class="whatever">
<h2>foobar</h2>
</div>