我有一个字符串,其中包含Processing date : 14 Aug 2013
或类似的字符串。它不是每次都在同一个地方,所以我正在查看正则表达式以找到14 Aug 2013
部分。
_date = Regex.Match(_headerLines.Last(), @"(Branch processing date : )(\S{1,11})",
RegexOptions.IgnoreCase).Groups[2];
给我14
而不是剩下的日期?
答案 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})"