Sublime Text: regreplace - переместить весь тег над другим тегом - PullRequest
0 голосов
/ 03 мая 2018

Не уверен, если это возможно.

То, что я хочу сделать, это переместить весь тег с его содержимым над другим тегом.

Например:

<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<test><p class=\"para\">(.*?)(</p>))

Я также могу захватить всю таблицу:

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

Так что не уверен, что сможешь переместить его.

Может кто-нибудь помочь?

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Regex: (\<table(?:.*\n)+\<\/table>)\n(\<p(?:.*?)\<\/p>)

Заменить на: $2\n$1

Демо

0 голосов
/ 03 мая 2018

Вместо регулярных выражений используйте распаковку и 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>
...