使用正则表达式,我能够找到一堆我想要替换的数字。但是,我想用另一个使用原始捕获数字计算的数字替换该数字。
在notepad ++中使用替换部分中的一种表达式可以实现吗?
编辑:也许是一个奇怪的想法,但可以在搜索部分进行计算,生成第二个捕获的数字,这实际上是结果吗?
答案 0 :(得分:3)
在notepad ++中使用替换部分中的一种表达式可以实现吗?
正则表达式匹配的插值评估是一个相对高级的功能,我可能不希望在通用文本编辑应用程序中找到它。我玩了一些Notepad ++,但无法使其工作,我也无法在文档中找到任何暗示可行的内容。
答案 1 :(得分:3)
即使 可能,它几乎肯定会“混乱” - 为什么不用简单的脚本代替?例如..
#!/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++有一个插件系统,虽然我不知道使用它有多容易。
基本上,如果正则表达式/搜索和替换无法达到你想要的效果,我会说要么使用编辑脚本功能,要么使用外部脚本。
答案 2 :(得分:2)
嗯......我不得不推荐AWK这样做。
答案 3 :(得分:1)
notepad ++内置了有限的正则表达式。有一些扩展可以为正则表达式添加更多的查找和替换,但我发现那些难以使用。我建议你写一点外部程序来为你做。无论是Ruby,Perl还是Python都会很棒。如果你知道那些语言。我使用Ruby并且已经取得了很多成功。