var tekst = "Sum km-ta 20% _48,15";
var rida = Regex.Match(tekst, @"(?si)Sum(_)?(\skm-ta)?(\s)?(20%)?(:)?(\s)?(_)?(?<kmta>.*?)\s", RegexOptions.Singleline);
var tekst = "Sum km-ta 20% _48,15";
var rida = Regex.Match(tekst, @"(?si)Sum(_)?(\skm-ta)?(\s)?(20%)?(:)?(\s)?(_)?(?<kmta>[\d,\.]*)(\s)?", RegexOptions.Singleline);
var ridaGroup = rida.Groups["kmta"].Value; // 48,15
1条答案
按热度按时间3duebb1j1#
问题是
kmta
组是惰性的,所以空匹配是可以的。您可以尝试限制组内允许的内容并消除惰性,字符串-(?si)Sum(_)?(\skm-ta)?(\s)?(20%)?(:)?(\s)?(_)?(?<kmta>[\d,\.]*)(\s)?
的末尾也没有不可见字符:你也可以去掉惰性,让
\s
成为可选的:(?si)Sum(_)?(\skm-ta)?(\s)?(20%)?(:)?(\s)?(_)?(?<kmta>.*)\s?