使用文本编辑器自动移动HTML标签/元素

时间:2015-09-24 13:55:47

标签: html regex replace automation notepad++

我有大约1500个html文件,并且所有这些文件都在<audio>标记内有一个html <main>标记,通常位于<main>标记的开头附近。

我们需要在结束<audio>代码之前将所有这些</main>代码移至正确位置。

由于我们讨论的是1500个html文件,有没有办法自动执行此任务?

为清楚起见,我们有这样的页面:

    <main>
        <p>Some text</p>
        <audio src="someaudio.mp3"></audio>
        <p>Some text</p>
        <p>Some text</p>
    </main>

并希望将其修复为:

    <main>
        <p>Some text</p>
        <p>Some text</p>
        <p>Some text</p>
        <audio src="someaudio.mp3"></audio>
    </main>

每个音频标签都是每页自定义的。

每个页面都不同。

我通常使用记事本++,我正在使用Windows环境。

没有javascript。必须直接对html文件执行此操作。

编辑:为了清晰而编辑,对不起。

1 个答案:

答案 0 :(得分:1)

我认为有点可以实现,但我可以看到许多陷阱。

1500个文件是批次的文件,所以我可以看到你想要自动化的原因。但是,在此结束时,您仍然需要验证每个人是否已达成您的预期,因为正如您所说:

  

每个音频标签都是每页自定义的。

     

每个页面都不同。

无论如何,进入&#34;解决方案&#34;这会让你更接近你需要的东西。

这是我取得了一些成功:

My Find/Replace settings

打破它......

查找。

<main(.*)(<audio.*?</audio>)(.*)</main>
  • <main(.*) 这是找到<main>标记后跟包含换行符的任何内容,因为我们选择了matches newline选项。我们正在保留组中的内容(由括号表示),因为我们稍后会在替换中使用它。

  • (<audio.*?</audio>) 这是找到并保留完整的<audio>标记。

  • (.*)</main> 这是在<audio>标记之后但在结束</main>标记之前找到任何内容,并保留它。

替换。

<main$1$3$2\r\n</main>
  • <main$1 我们需要放回开头<main>标记,因为我们没有抓住它。 $ 1包含我们捕获的第一批内容,所以我们现在把它放回去。

  • $3 现在我们放回了在第3组中捕获的<audio>标记后找到的任何内容。

  • $2\r\n<main> 现在我们放回音频标签本身,新行和结束</main>标签。

注意事项。

以上是基于您的简单示例。这不是现实世界&#34; HTML。

超过1500个HTML文件我非常怀疑这对每个文件都有效。有些将以奇怪的方式构建,以防止它完全按照您的要求进行操作。