2012-01-04 79 views
2

只有第一个结果使用正则表达式c# vs2008正则表达式返回来自多个匹配

我试图从文本加载从文件中很长的字符串得到的数字。

在这个源字符串中有多个我想要出来的数据实例。例如:
例如。 “税务发票否INV1870507”可在来源String中重复10次,每次比赛之间有任何未知数量的字符。 我想获得数字“1870507”。这个数字对于我加载的每个不同的文件都是不同的,我需要找到这个数字。

使用此图案:(?<=Tax Invoice No[\s\r\n]+INV)(?'InvNo'[^\s\r\n]+)? 我可以正确地获得每次发生的匹配并可以读取数字。我得到10场比赛和10组。

我想让Regex在第一场比赛中短路,并且只返回1场比赛因为我有我需要的信息,因此无需保持匹配。

任何人都可以请指教?

+0

请参阅http://stackoverflow.com/questions/2631183/c-sharp-regex-how-to-specify-to-only-match-first-occurrence – 2012-01-04 08:05:26

回答

3

你想用这个C#,所以你可以用:

Regex regex = new Regex("(?<=Tax Invoice No[\s\r\n]+INV)(?'InvNo'[^\s\r\n]+)?"); 
regex.Match(myString); 

匹配:将搜索首次出现正则表达式的输入字符串...

应实际上做你想做的事。