在C#中使用正则表达式匹配后从字符串中提取下一个x个字符

时间:2013-09-29 11:36:11

标签: c# regex

我有一个字符串,其中包含Processing date : 14 Aug 2013或类似的字符串。它不是每次都在同一个地方,所以我正在查看正则表达式以找到14 Aug 2013部分。

_date = Regex.Match(_headerLines.Last(), @"(Branch processing date : )(\S{1,11})", 
  RegexOptions.IgnoreCase).Groups[2];

给我14而不是剩下的日期?

2 个答案:

答案 0 :(得分:2)

这是因为\S匹配除空格之外的所有字符,因此它将匹配1和4并在紧随其后的空格处停止。你可以尝试:

@"(Branch processing date : )(.{1,11})"

如果您确定日期恰好在Branch processing date :部分之后,或使用类似的内容:

@"(Branch processing date : )([0-9]+ [A-Za-z]+ [0-9]{4})"

哪个更具限制性。

答案 1 :(得分:1)

因为\S与非空格字符匹配,所以它不能按预期工作。

\S替换为与.匹配的任何字符(换行符除外)。

@"(Branch processing date : )(.{1,11})"