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