2010-05-30 52 views
2

是否有一个奇异的正则表达式,可以用在文本编辑器的搜索/替换对话框中,以反转列表中项目的顺序?正则表达式颠倒顺序的列表?

举例来说,使用这个列表:

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

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

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

可以这样做?

+1

我会感到惊讶,如果它能够在一个单一的表达来实现;无论如何,它听起来都不像RegEx的工作。 – Jay 2010-05-30 18:22:00

回答

4

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

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

0

技术上不是正则表达式,但有一个sed一衬里反转输入的线(source):

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

vi命令扭转目前文件的行(source):

:g/.*/m0 
1

只有在列表中有项目的固定,已知数量n,甚则变正则表达式作为n变得更复杂。 (主要难点通常是在引擎中得到一个字面换行符。)

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

2

在MSDOS

SORT /R <originallist.txt> resortedlist.txt 
+1

这不会颠倒输入的顺序,这会以相反的顺序对输入进行排序。不是一回事。 – Dan 2014-10-12 01:43:24

0

我知道它已经很长一段时间,因为这是问......但这个答案是不是在这里。

原文:“敏捷的棕色狐狸”

查找:(\ w +)\ s

取决于你如何格式的文本编辑器中的列表,你可以沿着这些路线做些什么(\ w +)\ s(\ w +)\ s(\ w +)

替换:$ 4 $ 3 $ 2 $ 1

输出: “福克斯布朗快速的” (可在记事本++,只要确保你选择“正则表达式”选项)

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