2

是否可以在文本编辑器的搜索/替换对话框中使用单个正则表达式来反转列表中项目的顺序?

例如,以这个列表为例:

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

在像 EditPad 这样的文本编辑器中选择它,调出搜索和替换框,应用正则表达式(是否作为循环运行)并将其变成:

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

这可以做到吗?

4

5 回答 5

4

This cannot be done by a regular expression.

I'd recommend using a language like Perl, where you can use a regular expression to split the list and write it back in reversed order.

于 2010-05-30T18:25:56.903 回答
2

在 MSDOS 中

SORT /R < originallist.txt > resortedlist.txt
于 2011-02-11T20:22:13.010 回答
1

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

使用脚本语言可以很容易地生成这一系列越来越复杂的正则表达式;但是,一旦您使用了脚本语言,几乎可以肯定的是,使用它来进行逆向本身会更容易!

于 2010-05-30T19:08:21.623 回答
1

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

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

原文:《敏捷的棕狐》

查找: (\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

于 2013-07-18T21:24:45.557 回答
0

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

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

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

:g/.*/m0
于 2010-05-30T18:45:54.657 回答