gpt4 book ai didi

C#正则表达式匹配

转载 作者:行者123 更新时间:2023-11-30 13:33:45 26 4
gpt4 key购买 nike

18.jun。 7 noči od 515,00 欧元

这里我想用正则表达式得到 515,00。

Regex regularExpr = new Regex(@rule.RegularExpression,
RegexOptions.Compiled | RegexOptions.Multiline |
RegexOptions.IgnoreCase | RegexOptions.Singleline |
RegexOptions.IgnorePatternWhitespace);

tagValue.Value = "18.jun. 7 noči od 515,00 EUR";
Match match = regularExpr.Match(tagValue.Value);

object value = match.Groups[2].Value;

正则表达式是:\d+((.\d+)+(,\d+)?)?

但我总是得到一个空字符串 ("")。如果我在 Expresso 中尝试这个正则表达式,我会得到一个包含 3 个值的数组,第三个是 515,00。

我得到一个空字符串的 C# 代码有什么问题?

最佳答案

您的正则表达式匹配 18(因为小数部分是可选的),match.Groups[2] 指的是第二个捕获括号 (.\d+) 应该正确读作(\.\d+),没有参与比赛,所以返回空串。

您需要更正您的正则表达式并迭代结果:

StringCollection resultList = new StringCollection();
Regex regexObj = new Regex(@"\d+(?:[.,]\d+)?");
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success) {
resultList.Add(matchResult.Value);
matchResult = matchResult.NextMatch();
}

resultList[2] 将包含您的匹配项。

关于C#正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com