c#regex用于搜索文本但不在匹配的组中报告

时间:2011-08-31 13:56:59

标签: c# .net regex

我从用于数据处理的实用程序输出以下内容。

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+)+

但事实并非如此。

有人可以指出我正确的方向。

谢谢 乔纳森博尔顿

4 个答案:

答案 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+

输出:

enter image description here

答案 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+)+");