正则匹配并替换数学操作中的操作员



给定输入字符串

12/3
12*3/12
(12*54)/(3/4)

我需要用一个包含操作员的字符串查找并替换每个操作员

some12text/some3text
some12text*some2text/some12text
(some12text*some54text)/(some3text/some4text)

实际应用:从后端(C#(,我有以下字符串

34*157

我需要翻译为:

document.getElementById("34").value*document.getElementById("157").value

并返回可以在eval((函数中运行的屏幕。

到目前为止我有

var pattern = @"d+";
var input = "12/3;
Regex r = new Regex(pattern);
var matches = r.Matches(input);
foreach (Match match in matches)
{
 // im at a loss what to match and replace here
}

注意:我不能在foreach循环中执行blanket input.replace((,因为它可能会错误地替换(12/123( - 它只能匹配前12个以替换

警告2:我可以使用string.remove and string.insert,但是在第一个匹配后突变字符串,因此它抛出了下一个匹配的计算

任何指针都赞赏

在这里您去

string pattern = @"d+"; //machtes 1-n consecutive digits
var input = "(12*54)/(3/4)";
string result = Regex.Replace(input, pattern, "some$0Text"); 

$0是与模式 d+匹配的字符组。你也可以写

string result = Regex.Replace(input, pattern, m => "some"+ m.Groups[0]+ "Text"); 

小提琴:https://dotnetfiddle.net/juknx2

最新更新