在替换前对正则表达式中的捕获数量进行计算 [英] Do calculation on captured number in regex before using it in replacement

查看:18
本文介绍了在替换前对正则表达式中的捕获数量进行计算的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

在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++有一个插件系统,尽管我不知道它有多容易使用)。

基本上,如果regex/Search-and-Replace不能达到您想要的效果,我会建议您使用编辑器的脚本编写功能或使用外部脚本。

这篇关于在替换前对正则表达式中的捕获数量进行计算的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆