将RegEx与特定结束短语匹配但从捕获中排除

时间:2013-10-17 12:11:22

标签: c# regex match

我有一个文件,我希望从中获取具体日期。文件中有很多日期,但我要找的是这样的:

  Blahblah blah blah blahblahblah

     

2013年10月7日

     

私人&保密

因此,我尝试匹配Private & Confidential之后的日期,但我并不认为Private & Confidential处于捕获状态。所以我需要实际捕获为07 October 2013。我使用的正则表达式如下:

(\d{2})(\/|-|\s*)?(January|February|March|April|May|June|July|August|September|October|November|December)(\/|-|\s*)?(\d{4})\s*(?:Private & Confidential)

我一直在使用?:来匹配但不捕获Private & Confidential,但我不确定这是否正确使用。有没有人有任何想法?

2 个答案:

答案 0 :(得分:2)

使用lookahead

(?=\s*Private & Confidential)

答案 1 :(得分:1)

您应该使用前瞻(?=...),也不需要捕获分隔符。 :

(\d{2})(?:\/|-|\s*)?(January|February|March|April|May|June|July|August|September|October|November|December)(?:\/|-|\s*)?(\d{4})\s*(?=Private & Confidential)

Demo