C# 中的正则表达式返回C中的浮点列表#
我对正则表达式真的很陌生。您能告诉我什么将是正则表达式finde亚马逊费用在下面的字符串。所以它给了我浮动列表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
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);
}