2

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

在notepad ++中使用替换部分中的一种表达式是否可能?

编辑:也许是一个奇怪的想法,但计算可以在搜索部分完成,生成第二个捕获的数字,这将有效地成为结果?

4

4 回答 4

3

在notepad ++中使用替换部分中的一种表达式是否可能?

正则表达式匹配的插值评估是一个相对高级的功能,我可能不希望在通用文本编辑应用程序中找到它。我玩了一下记事本++,但无法让它工作,我也无法在文档中找到任何表明这是可能的东西。

于 2009-03-14T17:34:24.593 回答
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++有一个插件系统,虽然我已经不知道它是多么容易使用)。

基本上,如果 regex/search-and-replace 不能达到你想要的,我会说要么使用你的编辑器脚本能力,要么使用外部脚本。

于 2009-04-03T19:06:11.367 回答
2

嗯...我不得不推荐 AWK 来做这件事。

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

于 2009-03-14T17:35:30.693 回答
1

notepad++ 内置了有限的正则表达式。有一些扩展为正则表达式查找和替换添加了更多内容,但我发现那些很难使用。我建议编写一个小外部程序来为您完成。Ruby、Perl 或 Python 都适合它。如果你知道那些语言。我使用 Ruby 并取得了很大的成功。

于 2009-04-03T18:33:42.020 回答