我正在寻找将“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”结尾,这不是我所期望的。谁能做得更好?
答案 0 :(得分:5)
使用lookarounds。
(?<=\/)(\d+)\b(?!\.)
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");