在使用替换之前,对正则表达式中捕获的数字进行计算

时间:2009-03-14 17:32:00

标签: regex notepad++

使用正则表达式,我能够找到一堆我想要替换的数字。但是,我想用另一个使用原始捕获数字计算的数字替换该数字。

在notepad ++中使用替换部分中的一种表达式可以实现吗?

编辑:也许是一个奇怪的想法,但可以在搜索部分进行计算,生成第二个捕获的数字,这实际上是结果吗?

4 个答案:

答案 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这样做。

http://en.wikipedia.org/wiki/AWK

答案 3 :(得分:1)

notepad ++内置了有限的正则表达式。有一些扩展可以为正则表达式添加更多的查找和替换,但我发现那些难以使用。我建议你写一点外部程序来为你做。无论是Ruby,Perl还是Python都会很棒。如果你知道那些语言。我使用Ruby并且已经取得了很多成功。