RegEx, чтобы изменить порядок списка? - PullRequest
2 голосов
/ 30 мая 2010

Есть ли единичное регулярное выражение, которое можно использовать, скажем, в диалоге поиска / замены текстового редактора для изменения порядка элементов в списке?

Например, возьмите этот список:

  • Первый предмет
  • Второй предмет
  • Третий элемент

Выберите его в текстовом редакторе, таком как EditPad, откройте окно поиска и замены, примените регулярное выражение (выполняется как цикл или нет) и превратите его в:

  • Третий элемент
  • Второй предмет
  • Первый предмет

Можно ли это сделать?

Ответы [ 5 ]

4 голосов
/ 30 мая 2010

Это невозможно сделать с помощью регулярного выражения.

Я бы рекомендовал использовать такой язык, как Perl, где вы можете использовать регулярное выражение, чтобы разделить список и записать его обратно в обратном порядке.

2 голосов
/ 11 февраля 2011

В MSDOS

SORT /R < originallist.txt > resortedlist.txt
1 голос
/ 30 мая 2010

Только если список имеет фиксированное, известное число n элементов, и даже тогда регулярное выражение усложняется с ростом n. (Основная трудность, как правило, заключается в том, чтобы ввести буквально новую строку в двигатель.)

С помощью языка сценариев можно довольно легко генерировать эту серию все более сложных регулярных выражений; однако, как только вы используете язык сценариев, почти наверняка будет проще использовать его для реверсирования!

0 голосов
/ 19 июля 2013

Я понимаю, что прошло довольно много времени с тех пор, как об этом спросили ... но этого ответа не было.

В зависимости от того, как вы отформатировали свой список в текстовом редакторе, вы можете сделать что-то вроде этого:

Оригинальный текст: «Быстрая коричневая лиса»

Найти: (\ w +) \ s (\ w +) \ s (\ w +) \ s (\ w +)

Заменить: $ 4 $ 3 $ 2 $ 1

Вывод: "Fox Brown Quick The" (работает на notepad ++, просто убедитесь, что вы выбрали опцию «регулярное выражение»)

эквивалент javascript:

        var string = "The Quick Brown Fox";
        string.replace(/(\w+)\s(\w+)\s(\w+)\s(\w+)/,"$4 $3 $2 $1");

хорошая ссылка https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

0 голосов
/ 30 мая 2010

Технически не регулярные выражения, но есть sed однострочный, который переворачивает строки ввода ( source ):

sed '1!G;h;$!d'

и команда vi для обращения строк текущего файла ( source ):

:g/.*/m0
...