我从用于数据处理的实用程序输出以下内容。
Processed output from W765 build 66721
File target: C:\Documents and Settings\Jon\Desktop\test\1024\cards.dat
Cards loaded: 876 1456 1457 1459 2072
Errors encountered (0)
Warnings encountered (0)
Pass
我希望.Net正则表达式能够只检索876 1456 1457 1459 2072
组而不是其他任何内容。
我必须做到这一点
([0-9]\d+)+
但不幸的是它产生了
找到8个匹配项:
765
66721
1024
876
1456
1457
1459
2072
我认为这会起作用
.*(?:Cards loaded\: )([0-9]\d+)+
但事实并非如此。
有人可以指出我正确的方向。
谢谢 乔纳森博尔顿
答案 0 :(得分:2)
试试这个:
Cards loaded:(?'digits'(\d|\s)+)
这将在命名组“digits”中返回您需要的数字部分
答案 1 :(得分:0)
也许您可以尝试Cards loaded\: [\d\s]+
返回Cards loaded: 876 1456 1457 1459 2072
,然后在该字符串上执行\d+
以获取每个相关结果。
答案 2 :(得分:0)
使用此:
(?m)(?<=^Cards loaded: (?:\d+\s)*)\d+
输出:
答案 3 :(得分:0)
它是否必须只是一个正则表达式,即只需在解析之前删除你不想要的guff
string toSearch = @"Processed output from W765 build 66721 File target: C:\Documents and Settings\Jon\Desktop\test\1024\cards.dat Cards loaded: 876 1456 1457 1459 2072 Errors encountered (0) Warnings encountered (0) Pass";
string shortened = toSearch.Substring(toSearch.IndexOf("Cards loaded:"));
var matches = Regex.Matches(shortened,@"([0-9]\d+)+");