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

时间:2018-12-19 12:39:55

标签: c# regex

我需要编写正则表达式来查找数字,并附加符号以找到匹配项。

输入文字:

  

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

Regx查找税额/价值:

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

在regx上找到税额5.98,但我需要附加$或#,使最终结果变为$ 5.98或#5.98。

正则表达式将馈给第三方应用程序,该应用程序将从Regx返回任何内容,因此,我无法编写c#代码来分别处理regx结果,因此查找和追加需要在单个正则表达式中完成。

我找不到任何方法来附加或替换regx匹配/结果。有什么办法吗?

经过验证的Regx可以进行测试here

3 个答案:

答案 0 :(得分:2)

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

input
  

Double Espresso 4 Mocha 55.42小计72.45税5.98

正则表达式:

(?!\s+Tax\s+)((\d+\.\d+)|\d+)$

替代者:

 #$&

结果:

  

Double Espresso 4 Mocha 55.42小计72.45税#5.98

链接:https://regexr.com/457ms

替换为C#

var input = "Double Espresso 4 Mocha 55.42 Subtotal 72.45 Tax 5.98";
var result = Regex.Replace(input, @"(?!\sTax\s)((\d+\.\d+)|\d+)$", "#$1");

答案 1 :(得分:0)

使用此#$3$6替换为正则表达式。如果您不知道如何在C#中用正则表达式替换,请参见this

答案 2 :(得分:0)

假设税额中总是有{strong> 个.,您可以执行以下操作将其替换为逗号,并使用一个正则表达式将其前缀为$

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");

返回:

Double Espresso 4.75 Subtotal 72.45 Tax $5,98

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

如果您想在前面加上一个井号(#),则无需特别注意:

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