RegEx逆转清单的顺序?

时间:2010-05-30 18:18:13

标签: regex list reverse inverse

是否有一个单数正则表达式可用于比较文本编辑器的搜索/替换对话框以反转列表中项目的顺序?

例如,请列出以下列表:

  • 第一项
  • 第二项
  • 第三项

在EditPad等文本编辑器中选择它,打开搜索和替换框,应用正则表达式(无论是否循环运行)并将其转换为:

  • 第三项
  • 第二项
  • 第一项

可以这样做吗?

5 个答案:

答案 0 :(得分:4)

这不能通过正则表达式完成。

我建议使用像Perl这样的语言,您可以使用正则表达式拆分列表并按相反的顺序将其写回。

答案 1 :(得分:2)

在MSDOS中

SORT /R < originallist.txt > resortedlist.txt

答案 2 :(得分:1)

仅当列表具有固定的已知数量n的项目时,即使这样,当n增长时,正则表达式也会变得更复杂。 (主要的困难通常是在引擎中获得文字换行符。)

使用脚本语言可以很容易地生成这一系列日益复杂的正则表达式;但是,一旦你使用脚本语言,它几乎肯定更容易用于逆转本身!

答案 3 :(得分:0)

在技术上不是正则表达式,但有一个sed单行反转输入行(source):

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

vi命令来反转当前文件的行(source):

:g/.*/m0

答案 4 :(得分:0)

我意识到已经有一段时间了,因为这被问到......但这个答案不在这里。

根据您在文本编辑器中对列表进行格式化的方式,您可以按照以下方式执行操作:

原文:“The Quick Brown Fox”

查找:(\ w +)\ s(\ w +)\ s(\ w +)\ s(\ w +)

替换:$ 4 $ 3 $ 2 $ 1

输出:“Fox Brown Quick The” (适用于记事本++,只需确保选择“正则表达式”选项)

相当于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