模式将"1/3"替换为"1/3.0"

Ger*_*ard 4 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");
Run Code Online (Sandbox Code Playgroud)

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

Avi*_*Raj 5

使用外观.

(?<=\/)(\d+)\b(?!\.)
Run Code Online (Sandbox Code Playgroud)

DEMO

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

说明:

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