如何修改C#正则忽略数字间空格,正确提取Top Rate后的整数?
修复方案
原有正则的捕获组[\d,\.]+仅匹配连续的数字、逗号、小数点组合,一旦遇到空白就会停止捕获,所以只能拿到首个数字。按以下两步修改即可覆盖你列出的所有场景:
1. 调整正则匹配规则
调整捕获组规则,将数字、逗号、小数点以及中间夹杂的任意空白都纳入匹配范围:
var topRateMatch = Regex.Match(result, @"\bTop Rate\b.*?([\d\s,\.]+)", RegexOptions.IgnoreCase);
2. 转换前清理所有空白字符
拿到匹配结果后,先移除所有空白字符再做int转换:
// 基础方案:移除空格、制表符类常见空白 string cleanedValue = topRateMatch.Groups[1].Value.Replace(" ", "").Replace("\t", ""); // 通用兼容方案:如果需要兼容换行等其他类型空白,可改用正则替换所有空白 // string cleanedValue = Regex.Replace(topRateMatch.Groups[1].Value, @"\s+", ""); // 按原有规则转int topRate = int.Parse(cleanedValue, System.Globalization.NumberStyles.AllowThousands);
修改后你给出的所有测试场景都可以正确输出888888。
内容的提问来源于stack exchange,提问作者davis
相关产品推荐
相关产品推荐

