C# 中的正则表达式返回C中的浮点列表#

C# 中的正则表达式返回C中的浮点列表#,c#,.net,regex,.net-4.5,C#,.net,Regex,.net 4.5,我对正则表达式真的很陌生。您能告诉我什么将是正则表达式finde亚马逊费用在下面的字符串。所以它给了我浮动列表 private static List<float> GetAmazonFees(string text) { //Regular expression to fine list of fees } 这相当简单。您需要的正则表达式类似于亚马逊费用:(\-?)\$(\d+\。?\d*)\d 因此,利用这一点,我们可以: var matches = Rege

我对正则表达式真的很陌生。您能告诉我什么将是正则表达式finde亚马逊费用在下面的字符串。所以它给了我浮动列表

 private static List<float> GetAmazonFees(string text)
 {
      //Regular expression to fine list of fees
 }

这相当简单。您需要的正则表达式类似于
亚马逊费用:(\-?)\$(\d+\。?\d*)\d

因此,利用这一点,我们可以:

var matches = Regex.Matches(INPUT_STRING,@"Amazon fees: (\-?)\$(\d+\.?\d*)\D",RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
这将为我们提供所有匹配项的列表。然后,我们对浮点数进行处理:

var fees = new List<float>();

foreach(Match match in matches) {
   float fee = 0;

   if (match.Groups[1].Value == "") {
       fee = float.Parse(match.Groups[2].Value);
   } else {
       fee = float.Parse('-' + match.Groups[2].Value);
   }
   fees.Add(fee);
}
var费用=新列表();
foreach(匹配中的匹配){
浮动费用=0;
if(match.Groups[1]。值=“”){
fee=float.Parse(match.Groups[2].Value);
}否则{
fee=float.Parse('-'+match.Groups[2].Value);
}
费用。添加(费用);
}
我捕获了负数,虽然我们可以假设所有费用都是负数,但我宁愿检查它并返回正确的负数浮动


我想这应该是你想要的。我忽略了这里的很多错误检查,但你明白了。

它只返回匹配中的第一笔亚马逊费用。我粘贴了精确的字符串。请检查我认为第二次出现的字符串有问题。你的文本格式如何?我粘贴了上面的文本示例并运行了regex,它在上面运行得很好。我怀疑这是您以文本形式传递的格式。将正则表达式更新为
亚马逊费用:(\-?)\$(\d+\.?\d*)\d
,它似乎捕获了我现在可以测试的所有费用事件。没有清晰的中断(如返回)在值和字段之间,您将很难计算出值在哪里停止,字段在哪里开始,除非您给它一个要检查的已知字段列表。我现在就让你来玩玩这个想法。
var fees = new List<float>();

foreach(Match match in matches) {
   float fee = 0;

   if (match.Groups[1].Value == "") {
       fee = float.Parse(match.Groups[2].Value);
   } else {
       fee = float.Parse('-' + match.Groups[2].Value);
   }
   fees.Add(fee);
}