使用正则表达式,我能够找到一堆我想替换的数字。然而,我想用原始捕获的数字计算出另一个数字来替换它。
在Notepad++中使用替换部分的表达式是否可能?
编辑:也许是个奇怪的想法,但是计算可以在搜索部分完成,生成第二个捕获的数字,实际上就是结果吗?
使用正则表达式,我能够找到一堆我想替换的数字。然而,我想用原始捕获的数字计算出另一个数字来替换它。
在Notepad++中使用替换部分的表达式是否可能?
编辑:也许是个奇怪的想法,但是计算可以在搜索部分完成,生成第二个捕获的数字,实际上就是结果吗?
即使这是可能的,它几乎肯定会变得“混乱”-为什么不用一个简单的脚本来做替换呢?例如..
#!/usr/bin/env ruby
f = File.new("f1.txt", File::RDWR)
contents = f.read()
contents.gsub!(/d+/){|m|
m.to_i + 1 # convert the current match to an integer, and add one
}
f.truncate(0) # empty the existing file
f.seek(0) # seek to the start of the file, before writing again
f.write(contents) # write modified file
f.close()
这个不能翻译成中文。而输出:
$ cat f1.txt
This was one: 1
This two two: 2
$ ruby replacer.rb
$ cat f1.txt
This was one: 2
This two two: 3
回复Jeroen的评论:
我实际上很感兴趣,是否正则表达式本身存在这种可能性,因为它们非常普遍。
一个正则表达式实际上只是一个简单的模式匹配语法。要做比搜索/替换匹配更高级的任何操作,都将由文本编辑器自己实现,但这种语法的实用性非常有限,可以通过大多数编辑器支持的脚本实现(Notepad++ 有一个插件系统,虽然我不知道它使用起来是否容易)。
基本上,如果正则表达式/搜索和替换功能不能实现您想要的功能,我会建议使用编辑器的脚本能力或使用外部脚本。
在Notepad++中,使用替换部分的某种表达式可能吗?
正则表达式匹配的插值评估是相对较高级的功能,我不太可能在通用文本编辑应用程序中找到这个功能。我玩了一下Notepad ++,但无法使其工作,也找不到任何文档表明这是可能的。
嗯……我建议使用AWK来完成这个。
将此翻译成中文:http://en.wikipedia.org/wiki/AWK AWK
Notepad++ 具有有限的正则表达式内建。有一些扩展可以增加正则表达式查找和替换的功能,但我发现它们难以使用。我建议写一个小的外部程序来代替。Ruby、Perl 或 Python 都非常适合做这件事。如果你懂这些语言的话。我使用 Ruby 并且已经取得了很多成功。