假设我有这个字符串:
3+5+6+2^5+9+1+2+32^2+10^10
我想替换 ^ 左侧和右侧出现的所有数字,包括 ^ 但不包括数字结束的位置,例如 + 符号,以此为例:
- 2^5 现在应该变成 Pow(2,5)
- 32^2 现在应该变成 Pow(32,2)
- 10^10 现在应该变成 Pow(10,10)
我正在寻找某种正则表达式或字符串替换,它只会替换 ^ 符号左侧和右侧的数字(可以是小数)并且是较大字符串的一部分。试图使这项工作完全正确,我的大脑正在受伤。
刚刚测试,并在这里工作:
var str = Regex.Replace("3+5+6+2^5+9+1+2+32^2+10^10",
@"(\d+)\^(\d+)", "Pow($1,$2)");
如果您需要对更换进行更多控制:
var str = Regex.Replace("3+5+6+2^5+9+1+2+32^2+10^10",
@"(\d+)\^(\d+)",
m => string.Format("Pow({0},{1})", m.Groups[1].Value, m.Groups[2].Value ));
您可以使用组来替换
Regex.Replace("yourString",@"(\d+)\^(\d+)","Pow($1,$2)");
(\d+)
并被(\d+)
分为两组,即Group1
和Group 2
(不是第 0 组,因为它包含整个匹配项)
$1
当你替换它时,你可以在替换字符串中使用和引用这些组$2