删除非字母数字字符,但保留C#字符串中的小数

删除非字母数字字符,但保留C#字符串中的小数,c#,regex,char,C#,Regex,Char,我需要将其转换为: 7.5公斤(估计)。2.4公斤(总重量?%/=“度”)#@--__ 为此: 7.5kg估计总重量为2.4千克 注意事项: 删除非字母数字,但保留数字 数字可以有点或逗号表示法 数字可以是整数或小数 编辑 我想知道我需要对这个正则表达式求反“\d+[\.\,]?\d*(匹配整数和小数),然后删除结果中的非字母数字。不确定这在单个正则表达式中是否可行 正则表达式就可以了。 C#代码和字符混在一起也可以 编辑2 我根据Keith的回答做了一些研究,以便更好地理解它: 您可以执行

我需要将其转换为:

7.5公斤(估计)。2.4公斤(总重量?%/=“度”)#@--__

为此:

7.5kg估计总重量为2.4千克

注意事项:

  • 删除非字母数字,但保留数字
  • 数字可以有点或逗号表示法
  • 数字可以是整数或小数
编辑

我想知道我需要对这个正则表达式求反“\d+[\.\,]?\d*(匹配整数和小数),然后删除结果中的非字母数字。不确定这在单个正则表达式中是否可行

正则表达式就可以了。
C#代码和字符混在一起也可以

编辑2

我根据Keith的回答做了一些研究,以便更好地理解它:


您可以执行以下操作:-

public static string Filter(string s)
{
    var regex = new Regex(@"(\d\.\d|\d,\d|[0-9a-zA-Z]|\s)+");
    var matches = regex.Matches(s);
    var sb = new StringBuilder();
    foreach (var match in matches) sb.Append(match);
    return sb.ToString();
}

static void Main(string[] args)
{
    Console.WriteLine(Filter("7.5kg (estimate). 2,4 kilos (total?%/=\"º).,¿#@--__"));
}

好吧,试一下,如果你有什么问题,回来问一个具体的问题好吧,我一直在努力,但没有成功。这就是我在这里问的原因。我需要一种“匹配所有匹配项,但不匹配
@”\d+[\.\,]?\d*“
)”替代方案,具有负前瞻性,但可能无法处理所有边缘情况