我需要的正則表達式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