使用文本编辑器自动移动 HTML tags/elements

Moving HTML tags/elements automatically with text editor

我有大约 1500 个 html 文件,所有文件在 <main> 标签内都有一个 html <audio> 标签,通常位于 <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>

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

每一页都不一样。

我通常使用notepad++,我在windows环境下工作。

没有javascript。这必须直接对 html 文件完成。

编辑:为清楚起见进行了编辑,对此深感抱歉。

我认为这有点是可以实现的,但我可以看到很多陷阱。

1500 个文件是 lot 个文件,所以我明白您为什么要自动化。但是,最后您仍然需要验证每个人是否按照您的预期进行,因为正如您所说:

Each audio tag is custom to each page.

Each page is different.

无论如何,找到一个能让您更接近所需的“解决方案”。

这是我取得的一些成功:

分解...

发现。

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

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

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

替换。

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

  • </code> 现在我们放回我们在第 3 组中捕获的 <code><audio> 标签之后找到的任何内容。

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

警告。

以上是基于您的简单示例。这不是“真实世界”HTML.

超过 1500 个 HTML 文件 我非常怀疑这是否适用于每个文件。有些会以一种奇怪的方式构建,以防止它完全按照你的要求去做。