如何编写Regex.Match语法识别由双空格分隔两个数字的文本行
正确正则匹配规则
你原有正则的问题在于没有做行边界限制,也没有固定空白字符的数量,才会误匹配嵌入在其他字符中的数字。
符合需求的正则模式为:^ {2}\d{1,5} {2}(\d{4}|\d{6})\s*$
规则说明
^匹配行首,确保从行开头校验格式{2}匹配固定2个空格,保证第一个数字从第三个字符位开始\d{1,5}匹配1-5位的第一个数字{2}匹配两个数字之间固定的2个空格(\d{4}|\d{6})匹配仅4位或6位的第二个数字,你可以通过m.Groups[1].Value直接取到该数字\s*$允许行尾存在多余空白字符后结束,如果你要求第二个数字后不能有任何内容,可去掉\s*
调整后代码
Match m = Regex.Match(line, @"^ {2}\d{1,5} {2}(\d{4}|\d{6})\s*$"); if (m.Success) { // code to save it as a line element }
若你提供的匹配样例行首实际没有两个空格,是需求描述笔误,将正则开头的
{2}删除即可,调整后模式为^\d{1,5} {2}(\d{4}|\d{6})\s*$
内容的提问来源于stack exchange,提问作者Mike Fowler
相关产品推荐
相关产品推荐

