我需要的正则表达式2在文件名中的数字相乘,并减去1 为如:filename12.pdf应该成为filename23.pdf filename225.pdf应该成为filename449.pdf正则表达式用于替换数字2 *数字-1。用于替换文件名
请用正则表达式来帮助我。
我需要的正则表达式2在文件名中的数字相乘,并减去1 为如:filename12.pdf应该成为filename23.pdf filename225.pdf应该成为filename449.pdf正则表达式用于替换数字2 *数字-1。用于替换文件名
请用正则表达式来帮助我。
正则表达式通常不能进行计算,但它可以帮助您捕获该数字。您可以使用替换回调。下面是C#,例如:
助手方法(我们可以使用一个lambda,但它不太漂亮):
public string CalculateNumber(Match match)
{
int i = Convert.ToInt32(match.Value);
i = i * 2 - 1;
return i.ToString();
}
正则表达式替换:
String fileName = "filename23.pdf";
fileName = Regex.Replace(fileName, @"\d+", CalculateNumber);
这里一个重要的注意的是,字符串可能代表一个太大的整数(所以它不会解析)。此外,i*2-1
可能会溢出,导致负数。您可以使用checked
块,或使用BigInteger
(使用.Net 4)。
这里是一个办法做到这一点在Perl:
#!/usr/bin/perl
use 5.10.1;
use strict;
use warnings;
my $in = 'filename225.pdf';
$in =~ s/(\d+)/$1*2-1/e;
say $in;
输出:
filename449.pdf
或在PHP中:
function compute($matches) {
return $matches[1]*2-1;
}
$in = 'filename225.pdf';
$res = preg_replace_callback('/(\d+)/',"compute", $in);;
echo $res,"\n";
正则表达式可能与语言的变化.. 。 – 2011-02-17 06:06:07
您正在使用的任何特定语言? – 2011-02-17 06:08:11