Regex 使用正则表达式增加整数值1
我想增加价值。例如Regex 使用正则表达式增加整数值1,regex,Regex,我想增加价值。例如 杰瑞1 杰瑞2 杰瑞3 杰瑞4 我想改变这一点 杰瑞2 杰瑞3 杰瑞4 杰瑞5 如何更改?不要试图滥用正则表达式 根据设计,正则表达式不支持计数。原因很简单:如果您想要这样做,您至少需要一种类型2语言,而处理要比类型3(“常规”)语言复杂得多 有关详细信息,请参阅维基百科: 因此,根据定义,一旦你完全支持计数,它可能不再是一种常规语言 有一些扩展,例如perl扩展正则表达式,确实允许解决这个特殊问题。但本质上,它们不再是正则表达式,而是调用外部函数来完成工作 下面的p
- 杰瑞1
- 杰瑞2
- 杰瑞3
- 杰瑞4
- 杰瑞2
- 杰瑞3
- 杰瑞4
- 杰瑞5
如何更改?不要试图滥用正则表达式 根据设计,正则表达式不支持计数。原因很简单:如果您想要这样做,您至少需要一种类型2语言,而处理要比类型3(“常规”)语言复杂得多 有关详细信息,请参阅维基百科: 因此,根据定义,一旦你完全支持计数,它可能不再是一种常规语言 有一些扩展,例如perl扩展正则表达式,确实允许解决这个特殊问题。但本质上,它们不再是正则表达式,而是调用外部函数来完成工作 下面的perl扩展正则表达式应满足您的要求:
s/(-?\d+)/$1 + 1/eg
但本质上,只有匹配部分是正则表达式,替换是Perl,因此图灵完成。e
标志指示应该由Perl计算正确的部分,而不是作为regexp替换字符串
当然,您可以在几乎任何其他正则表达式引擎中执行此操作。匹配,然后计算增量,然后用新值替换匹配
完整的perl筛选器演示:
> echo 'Test 123 test 0 Banana9 -17 3 route66' | perl -pe 's/(-?\d+)/$1+1/eg'
Test 124 test 1 Banana10 -16 4 route67
p
标志使perl读取标准输入并将程序应用于每一行,然后输出结果。这就是为什么实际脚本只包含替换。这就是为什么Perl在unix脚本中如此流行的原因。您甚至可以将此过滤器批量应用于一整套文件(请参见-i
,了解就地修改,以及perlrun
手册页面)。因此,为了就地修改一整套文件(备份将用.bak
进行后期修复):
perl-p-i.bak-e的/(?\d+)/$1+1/eg'
不要试图滥用正则表达式
根据设计,正则表达式不支持计数。原因很简单:如果您想要这样做,您至少需要一种类型2语言,而处理要比类型3(“常规”)语言复杂得多
有关详细信息,请参阅维基百科:
因此,根据定义,一旦你完全支持计数,它可能不再是一种常规语言
有一些扩展,例如perl扩展正则表达式,确实允许解决这个特殊问题。但本质上,它们不再是正则表达式,而是调用外部函数来完成工作
下面的perl扩展正则表达式应满足您的要求:
s/(-?\d+)/$1 + 1/eg
但本质上,只有匹配部分是正则表达式,替换是Perl,因此图灵完成。e
标志指示应该由Perl计算正确的部分,而不是作为regexp替换字符串
当然,您可以在几乎任何其他正则表达式引擎中执行此操作。匹配,然后计算增量,然后用新值替换匹配
完整的perl筛选器演示:
> echo 'Test 123 test 0 Banana9 -17 3 route66' | perl -pe 's/(-?\d+)/$1+1/eg'
Test 124 test 1 Banana10 -16 4 route67
p
标志使perl读取标准输入并将程序应用于每一行,然后输出结果。这就是为什么实际脚本只包含替换。这就是为什么Perl在unix脚本中如此流行的原因。您甚至可以将此过滤器批量应用于一整套文件(请参见-i
,了解就地修改,以及perlrun
手册页面)。因此,为了就地修改一整套文件(备份将用.bak
进行后期修复):
perl-p-i.bak-e的/(?\d+)/$1+1/eg'
谢谢你所做的一切。我喜欢这样。谢谢你所做的一切。我喜欢这样。迭代每一行,提取数字,用一递增。为什么要使用正则表达式?遍历每一行,提取数字,用一递增。为什么要使用正则表达式?