C#正则表达式重复组捕获浮点数值时如何忽略前置空格?
解决方案
方案1:修改正则结构(推荐)
问题根源是当前正则的捕获组包含了数值前的空格,调整分组逻辑,仅捕获数值部分即可,其余代码无需变动:
var regex = new Regex(@"^\s*v(?:\s+([-+]?\b\d*\.?\d+\b))+$", options);
调整说明:
- 原来的
((?:\s+)[数值匹配])结构是把空格+数值整体捕获,修改为(?:\s+([数值匹配])),把空格匹配放在非捕获分组内,仅把数值部分划入捕获组 - 原有遍历
match.Groups[1].Captures的逻辑完全兼容,不需要额外修改
修改后输出结果符合预期:
'+0.5' '+0.5' '+0.5' '0.0' '1.0' '1.0' ...
方案2:不修改正则,捕获后去除空格
如果不想调整正则表达式,也可以在输出时对捕获结果做Trim处理:
Console.WriteLine($"'{capture.Value.Trim()}'");
内容的提问来源于stack exchange,提问作者aybe
相关产品推荐
相关产品推荐

