Sublime Text:regreplace - 将整个标记移动到另一个标记之上

时间:2018-05-03 17:52:19

标签: python regex sublimetext3 regex-group

不确定这是否可行。

我想要做的是将整个标记的内容移到另一个标记之上。

例如:

<table class="table1">
    <tr>
        <td>A</td>
    </tr>
</table>
<p class="para">Test</p>

我想将p及其内容移到表格上方,以便最终结果为:

<p class="para">Test</p>
<table class="table1">
    <tr>
        <td>A</td>
    </tr>
</table>

所以根本不知道如何移动它。我可以通过这个正则表达式捕获p:

 (?P<test><p class=\"para\">(.*?)(</p>))

我也可以捕获整个表格:

(<table (.*?)>)(.*?)(</table>))

所以不确定你是否可以移动它。

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:1)

正则表达式:(\<table(?:.*\n)+\<\/table>)\n(\<p(?:.*?)\<\/p>)

替换为:$2\n$1

Demo

答案 1 :(得分:0)

使用解包和str.join

,而不是正则表达式
s = """
 <table class="table1">
  <tr>
    <td>A</td>
 </tr>
 </table>
<p class="para">Test</p>
"""
*data, target = filter(None, s.split('\n'))
new_html = '{}\n{}'.format(target, '\n'.join(data))

Ouptut:

<p class="para">Test</p>
<table class="table1">
 <tr>
  <td>A</td>
 </tr>
</table>