C# 将字符串中除特殊字符开头和数字结尾以外的空格移到c中#

C# 将字符串中除特殊字符开头和数字结尾以外的空格移到c中#,c#,regex,C#,Regex,我想将下面的测试使用正则表达式替换为c# 表示删除除美元金额以外的空格。用空字符串替换以下正则表达式的所有匹配项: (?<!-?\$\d+(\.\d{2})?) +(?!-?\$) (? 这将匹配一个或多个未后跟$,或前面未后跟美元金额的空格 要使其工作,您的正则表达式引擎需要支持可变长度lookbehinds。这在C语言中不应该是问题,但此正则表达式可能无法在在线测试工具或其他语言中工作。这假设美元金额始终以$符号开头,但假设以数字结尾的任何内容都必须是美元金额1.这听起来不太对劲ri

我想将下面的测试使用正则表达式替换为c#


表示删除除美元金额以外的空格。

用空字符串替换以下正则表达式的所有匹配项:

(?<!-?\$\d+(\.\d{2})?) +(?!-?\$)
(?
这将匹配一个或多个未后跟
$
,或前面未后跟美元金额的空格


要使其工作,您的正则表达式引擎需要支持可变长度lookbehinds。这在C语言中不应该是问题,但此正则表达式可能无法在在线测试工具或其他语言中工作。

这假设美元金额始终以
$
符号开头,但假设以数字结尾的任何内容都必须是美元金额1.这听起来不太对劲right@sehe在数字之前,lookbehind还包含一个
$
字符,我不知道你的意思。如果需要更严格地限制lookbehind,你可以使用
(?!$\d+
。有趣的是,数字“P C-$10000 F+T X(a)”@user602291刚刚编辑过,所以现在应该也可以处理负数。@F.J如何在特殊字符+加号(开始括号)和结束括号前后删除空格。shundn不需要在$amount value前后删除空格。输入:最大值$250(S)/$500(F)+间隙+Anc输出:最大值$250(S)/$500(F)+Gap+anc当我尝试使用负数时,它会在number@user602291您可能有
-$10000
。我只想到
-$10000
。我现在修复了它,支持这两种样式
using System;
using System.Text.RegularExpressions;

public static class Program
{
    public static void Main(string[] args)
    {
        string before = @"P C $10000 F + T X (A) ";
        string after = Regex.Replace(before, @"(?<a> -?\$?\s*-?\s*[\d.]+ )|(?<b>\s*.*?(\s?))", 
                    m => m.Groups["a"].Success? m.Value : m.Value.Trim());

        Console.WriteLine("before: '{0}', after: '{1}'", before, after);
    }
}
using System;
using System.Text.RegularExpressions;

public static class Program
{
    public static void Main(string[] args)
    {
        string before = @"P C $10000 F + T X (A) ";
        string after = Regex.Replace(before, @"(?<a> -?\$?\s*-?\s*[\d.]+ )|(?<b>\s*.*?(\s?))", 
                    m => m.Groups["a"].Success? m.Value : m.Value.Trim());

        Console.WriteLine("before: '{0}', after: '{1}'", before, after);
    }
}
$ 10000
$ -2.30