C# 正则表达式以查找匹配项并将符号附加到结果

C# 正则表达式以查找匹配项并将符号附加到结果,c#,regex,C#,Regex,我需要编写正则表达式来查找一个数字,并将符号附加到找到的匹配项中 输入文本: 双份浓缩咖啡4.75小计72.45税5.98 Regx查找税额/价值: (?<=(TAX|Tax)(\t+|\s+))(.*)(\d*)?.?(\d*)?(\d+) (?这可以通过使用负前瞻来实现 input 双份浓缩咖啡4摩卡55.42小计72.45税5.98 正则表达式: (?!\s+Tax\s+)((\d+\.\d+)|\d+)$ 替代者: #$& 结果: 双份浓缩咖啡4摩卡55.42小计

我需要编写正则表达式来查找一个数字,并将符号附加到找到的匹配项中

输入文本:

双份浓缩咖啡4.75小计72.45税5.98

Regx查找税额/价值:

(?<=(TAX|Tax)(\t+|\s+))(.*)(\d*)?.?(\d*)?(\d+)

(?这可以通过使用负前瞻来实现

input
双份浓缩咖啡4摩卡55.42小计72.45税5.98

正则表达式:

(?!\s+Tax\s+)((\d+\.\d+)|\d+)$
替代者:

 #$&
结果:

双份浓缩咖啡4摩卡55.42小计72.45税#5.98

链接:

替换为C#


使用此项替换为正则表达式。如果您不知道如何在c#中替换为正则表达式,请参见。

如果税额中始终有
,您可以使用一个正则表达式将其替换为逗号,并在金额前面加上
$
,如:

var subjectString = "Double Espresso 4 Mocha 55.42 Subtotal 72.45 Tax 5.98";
var result = Regex.Replace(subjectString, @"(?!\sTax\s+)(\d+)(\.)?(\d+)?$", "$$$1,$3");
返回:

(您需要将前缀字符的美元符号加倍,因为
$
具有特殊含义)

如果您希望在前面有一个哈希符号(
#
),则无需特别注意:

var result = Regex.Replace(subjectString, @"(?!\sTax\s+)(\d+)(\.)?(\d+)?$", "#$1,$3");

很抱歉,如果您使用正则表达式提取某些文本,则无法同时向其中添加任何内容。您可以在使用字符串操作提取后替换或追加某些内容。您可以找到当前正则表达式的结果,在原始字符串中追加$符号,然后将新正则表达式和包含符号的新字符串发送给您的第三方应用程序?查找和附加需要在单个正则表达式中完成这很有趣-第三方知道它必须替换匹配项吗?因为替换是另一个操作。通过替换添加#可以工作,但它如何将替换点(.)之类的字符替换为逗号(,),从而生成结果“5,98”?
Double Espresso 4.75 Subtotal 72.45 Tax $5,98
var result = Regex.Replace(subjectString, @"(?!\sTax\s+)(\d+)(\.)?(\d+)?$", "#$1,$3");