我需要编写正则表达式来查找数字,并附加符号以找到匹配项。
输入文字:
双重浓缩咖啡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:
答案 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
替换为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)
答案 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");