我在字符串中有一个SQL查询,它是动态构建的。有时,它会包含"1000M"
形式的小数。
M
始终为大写。所以字符串可能如下所示:
"3 sql stmts here 10009M some other 3 sql stmts here"
我想知道是否可以可靠且一致地删除M
。所以字符串看起来像这样:
"3 sql stmts here 10009 some other 3 sql stmts here"
我开始考虑正则表达式:
[0-9][M]
这将匹配M
和M
之前的数字。
我想知道它是否可以使用正则表达式,除非有更好的方法
答案 0 :(得分:2)
您可以使用
var res = Regex.Replace(str, @"(\d+)M\b", "$1");
请参阅demo。
(\d+)
匹配且捕获到第1组一个或多个数字,M\b
匹配跟随非字符字符的M
或在字符串的末尾。
使用$1
(对第1组的反向引用),我们可以访问与第一个捕获组(...)
匹配的内容。
答案 1 :(得分:0)
我认为你需要一个空白边界,而不是一个单词边界。
查找:(?<=(?<!\S)\d+)M(?!\S)
替换:没有