正则表达式匹配和替换数学运算中的运算符
Regex match and replace operators in math operation
给定一个输入字符串
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 循环中执行 input.Replace(),因为它可能会错误地替换 (12/123) - 它应该只匹配前 12 个以替换
警告 2:我可以使用 string.Remove 和 string.Insert,但是这会在第一次匹配后改变字符串,因此它会抛出下一次匹配的计算
感谢任何指点
给你
string pattern = @"\d+"; //machtes 1-n consecutive digits
var input = "(12*54)/(3/4)";
string result = Regex.Replace(input, pattern, "some[=10=]Text");
[=12=]
是匹配模式\d+
的字符组。你也可以这样写
string result = Regex.Replace(input, pattern, m => "some"+ m.Groups[0]+ "Text");
Fiddle: https://dotnetfiddle.net/JUknx2
给定一个输入字符串
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 循环中执行 input.Replace(),因为它可能会错误地替换 (12/123) - 它应该只匹配前 12 个以替换
警告 2:我可以使用 string.Remove 和 string.Insert,但是这会在第一次匹配后改变字符串,因此它会抛出下一次匹配的计算
感谢任何指点
给你
string pattern = @"\d+"; //machtes 1-n consecutive digits
var input = "(12*54)/(3/4)";
string result = Regex.Replace(input, pattern, "some[=10=]Text");
[=12=]
是匹配模式\d+
的字符组。你也可以这样写
string result = Regex.Replace(input, pattern, m => "some"+ m.Groups[0]+ "Text");
Fiddle: https://dotnetfiddle.net/JUknx2