C# 将正则表达式与特定结束短语匹配,但从捕获中排除

C# 将正则表达式与特定结束短语匹配,但从捕获中排除,c#,regex,match,C#,Regex,Match,我有一个文件,我想从中获取一个特定的日期。文件中有许多日期,但我要查找的日期如下: 废话废话废话废话废话废话废话 2013年10月7日 私密 因此,我试图匹配紧跟着Private&Confidential的日期,但我不希望Private&Confidential出现在捕获中。因此,我需要实际捕获时间为2013年10月7日。我使用的正则表达式如下: (\d{2})(\/|-|\s*)?(January|February|March|April|May|June|July|August|Septem

我有一个文件,我想从中获取一个特定的日期。文件中有许多日期,但我要查找的日期如下:

废话废话废话废话废话废话废话

2013年10月7日

私密

因此,我试图匹配紧跟着
Private&Confidential
的日期,但我不希望
Private&Confidential
出现在捕获中。因此,我需要实际捕获时间为2013年10月7日。我使用的正则表达式如下:

(\d{2})(\/|-|\s*)?(January|February|March|April|May|June|July|August|September|October|November|December)(\/|-|\s*)?(\d{4})\s*(?:Private & Confidential)
我一直在使用
?:
匹配但未捕获
私有和机密
,但我不确定这是否正确使用。有人有什么想法吗?

使用:

使用:

使用:

使用:


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

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

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

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

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

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

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

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

D'oh,我知道这很简单。干杯。哦,我知道这很简单。干杯。哦,我知道这很简单。干杯。哦,我知道这很简单。干杯。每个部分之间需要分隔符,但仍有+1。每个部分之间需要分隔符,但仍有+1。每个部分之间需要分隔符,但仍有+1。每个部分之间需要分隔符,但仍有+1。每个部分之间需要分隔符,但仍有+1。