是否可以在文本编辑器的搜索/替换对话框中使用单个正则表达式来反转列表中项目的顺序?
例如,以这个列表为例:
- 第一项
- 第二项
- 第三项
在像 EditPad 这样的文本编辑器中选择它,调出搜索和替换框,应用正则表达式(是否作为循环运行)并将其变成:
- 第三项
- 第二项
- 第一项
这可以做到吗?
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.
在 MSDOS 中
SORT /R < originallist.txt > resortedlist.txt
仅当列表具有固定的、已知数量n
的项目时,即使这样,正则表达式也会随着增长而变得更加复杂n
。(主要的困难通常是在引擎中输入一个字面的换行符。)
使用脚本语言可以很容易地生成这一系列越来越复杂的正则表达式;但是,一旦您使用了脚本语言,几乎可以肯定的是,使用它来进行逆向本身会更容易!
我意识到自从被问到这个问题已经有一段时间了......但这个答案不在这里。
根据您在文本编辑器中格式化列表的方式,您可以按照以下方式进行操作:
原文:《敏捷的棕狐》
查找: (\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