You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# .NET7中Regex无法匹配,如何提取字符串中的48,15?

正则匹配失败原因及提取48,15的解决方案

匹配失败的核心原因

原正则表达式末尾的\s强制要求匹配一个空格,但目标字符串"Sum km-ta 20% _48,15"的结尾是_48,15,没有后续空格,这是导致匹配失败的直接原因。正则中包含的(:)?这类不存在于目标字符串的可选分组,不会影响匹配结果,只是冗余内容。

解决方法

方法一:修正原正则表达式

去掉末尾的\s(或改为\s?以适配可能存在结尾空格的场景),保留原有分组逻辑:

var tekst = "Sum km-ta 20% _48,15";
var rida = Regex.Match(tekst, @"(?si)Sum(_)?(\skm-ta)?(\s)?(20%)?(:)?(\s)?(_)?(?<kmta>.*?)");
if (rida.Success)
{
    Console.WriteLine(rida.Groups["kmta"].Value); // 输出:48,15
}

方法二:使用更简洁的正则直接提取

如果只需要提取_后的数字和逗号组合,可直接定位目标片段,避免冗余分组:

var tekst = "Sum km-ta 20% _48,15";
var match = Regex.Match(tekst, @"_([\d,]+)");
if (match.Success)
{
    Console.WriteLine(match.Groups[1].Value); // 输出:48,15
}

如果字符串前缀固定(始终是Sum km-ta 20% ),也可以用更精准的正则:

var match = Regex.Match(tekst, @"Sum km-ta 20% _([\d,]+)");

内容的提问来源于stack exchange,提问作者Andrus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:52:30