当前位置: 首页 > 知识库问答 >
问题:

如何只替换匹配集合中的特定匹配?

壤驷高洁
2023-03-14

我正在写一个求解方程求解方法。方法将是递归的;搜索所有外括号,当找到时,重新求解括号内的值,当没有找到括号时返回值。

20 * (6+3) / ((4+6)*9)
20 * 9 / ((4+6)*9)
20 * 9 / (10*9)
20 * 9 / 90
2
public int solve(string etq)
{
    Regex rgx = new Regex(@"\(([^()]|(?R))*\)");
    MatchCollection matches;

    matches = rgx.Matches(etq);
        
    foreach(Match m in matches)
    {
        //replace m in etq with unique value here
    }

    //calculations here
    return calculation
}

Regex.Replace(...)替换指定模式的所有匹配项。我希望能够匹配到多个场景,并用不同的输出替换每个场景

共有1个答案

许学真
2023-03-14

简单的解决方案

string input = "20 * (6+3) / ((4+6)*9)";
Console.WriteLine(input);
DataTable dt = new DataTable();
Regex rx = new Regex(@"\([^()]*\)");
string expression = input;
while (rx.IsMatch(expression))
{
    expression = rx.Replace(expression, m => dt.Compute(m.Value, null).ToString(), 1);
    Console.WriteLine(expression);
}
Console.WriteLine(dt.Compute(expression, null));

https://dotnetfiddle.net/u6hh1e

 类似资料:
  • 问题内容: 我需要通过一个reg表达式匹配两种情况并进行替换 ‘long.file.name.jpg’->’long.file.name_ suff .jpg’ ‘long.file.name_ a .jpg’->’long.file.name_ suff .jpg’ 我正在尝试执行以下操作 但这被削减了扩展名“ .jpg”,我得到了 long.file.name_suff。而不是long.fil

  • null 但问题是我的regex不是。

  • 我一直在玩Python 3.10中的结构模式匹配,但不知道如何让它匹配一组。例如,我尝试过: 我尝试过: 以及: 我想有一种方法可以做到这一点,因为我们可以匹配其他对象,我只是缺少正确的语法,但我想不出还有什么其他方法可以尝试。任何帮助都将不胜感激!谢谢

  • 匹配颜色 匹配不同图像中的颜色 “匹配颜色”命令可匹配多个图像之间、多个图层之间或者多个选区之间的颜色。它还允许您通过更改亮度和色彩范围以及中和色痕来调整图像中的颜色。“匹配颜色”命令仅适用于 RGB 模式。 注意:当您使用“匹配颜色”命令时,指针将变成吸管工具。在调整图像时,使用吸管工具可以在“信息”面板中查看颜色的像素值。此面板会在您使用“匹配颜色”命令时向您提供有关颜色值变化的反馈。请参阅查

  • 我只想替换字符串中的单词,如果单词字符或单词前后没有连字符。 文本: 替换后的预期结果: 正则表达式: < li >正则表达式当前仅匹配第一个匹配项(< code>#后的按钮)。我需要做什么来匹配所有事件? < li >如何在Java中将< code>button替换为< code>text或任何其他单词? 我读过主题我能在Java regex中替换组吗?,但是我真的不明白如何为我的特殊情况使用示

  • 问题内容: 我有一个字符串,其结构类似于:。每次来自外部源的字符串都可能有所不同。 我只想替换第一次出现的而不是其他的。可能吗? 问题答案: preg_replace的可选第四个参数是: