正则表达式在字符串中查找尾随字母

时间:2016-01-28 17:36:15

标签: c# regex pattern-matching

我在字符串中有一个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]

这将匹配MM之前的数字。

我想知道它是否可以使用正则表达式,除非有更好的方法

2 个答案:

答案 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)
替换:没有