模式将“1/3”替换为“1 / 3.0”

时间:2015-02-05 15:04:24

标签: c# regex

我正在寻找将“15 + 15/22 - 16 / 33.0”更改为“15 + 15 / 22.0 - 16 / 33.0”的正则表达式模式(将除法除以整数除以浮点)。到目前为止我的尝试:

        string test = "15 + 15/22 - 16/33.0";
        Regex regex = new Regex(@"(/[0-9]+[^\.])", RegexOptions.None);
        test = regex.Replace(test, "$1.0");

返回结果"15 + 15/22 .0- 16/33.0.0",其中“22. 0”中的空格以“.0.0”结尾,这不是我所期望的。谁能做得更好?

2 个答案:

答案 0 :(得分:5)

使用lookarounds。

(?<=\/)(\d+)\b(?!\.)

DEMO

string result = Regex.Replace(str, @"(?<=/)(\d+)\b(?!\.)", "$1.0");

<强>解释

  • (?<=\/)肯定的后瞻断言,断言匹配必须以正斜杠开头。
  • (\d+)捕获一个或多个数字字符。
  • \b在单词字符和非单词字符之间匹配的单词边界。
  • (?!\.)否定前瞻声称匹配后面不会有点。

答案 1 :(得分:1)

尝试以下

string test = "15 + 15/22 - 16/33.0";
Regex regex = new Regex(@"(/[0-9]+)([^\.0-9])", RegexOptions.None);
test = regex.Replace(test, "$1.0$2");