【问题标题】:Sublime Text: regreplace - move entire tag above another tagSublime Text:regreplace - 将整个标签移动到另一个标签上方
【发布时间】:2018-05-03 17:52:18
【问题描述】:

不确定这是否可能。

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

例如:

<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>))

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

谁能帮忙?

谢谢

【问题讨论】:

    标签: python regex sublimetext3 regex-group


    【解决方案1】:

    正则表达式:(\&lt;table(?:.*\n)+\&lt;\/table&gt;)\n(\&lt;p(?:.*?)\&lt;\/p&gt;)

    替换为:$2\n$1

    Demo

    【讨论】:

    • Sublime Text 上的 regreplace 的正则表达式是不同的,但我修改了它并且它起作用了。谢谢。
    • 解决方案 正则表达式:(?si)((.*?)
      )\n\t*(

      (.*?)

      ) 替换:\\4\n\\1
    【解决方案2】:

    代替正则表达式,使用解包和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))
    

    输出:

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

    【讨论】:

    • 你能在 sublime text 3 - regreplace 包上这样做吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多