我想将以下使用正则表达式的测试替换为 c#
Input: P C $10000 F + T X (A)
Output: PC $10000 F+TX(A)
表示除去美元金额以外的空间。
将以下正则表达式的所有匹配项替换为空字符串:
(?<!-?\$\d+(\.\d{2})?) +(?!-?\$)
这将匹配一个或多个没有后跟 a$
或前面没有美元金额的空格。
为此,您的正则表达式引擎需要支持可变长度的lookbehinds。这在 C# 中应该不是问题,但此正则表达式可能不适用于在线测试工具或其他语言。
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