C#正则表达式不匹配

C#正则表达式不匹配,c#,regex,C#,Regex,我有一个正则表达式 string dateformattwo = @"^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)(?:

我有一个正则表达式

 string dateformattwo = @"^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)(?:0?2|(?:Feb))\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})";
还有两条线

string value = "30.Jul.2019 This is the line that I want to match"
string value2 = "30.jul.2019"
正则表达式是正确的,但它与value不匹配,但与value2匹配。为什么会发生这种情况?

所以很难说这里到底期望的是什么,但我可以猜测为什么它不起作用:在你的正则表达式中,没有任何地方是你想要的
july
-在我看来,你只匹配
JUL

编辑:每个正则表达式都以
$
结尾,它在行尾声明其位置。第一行失败,因为日期后有个字符


尽管如注释中所指出的,它是一个php匹配正则表达式,但仍然匹配您想要的文本

根据RegexBuddy的说法,您的正则表达式与您提供的两个示例都不匹配。与Regex101相同,没有匹配项。这个正则表达式想做什么?这似乎非常具体——也许有更简单的方法。好吧,我的错,我犯了一个错误@NickReed and Ken,value2实际上等于“2019年7月30日”啊!谢谢你,这确实是一场比赛。我会仔细看看。@KevoyWalters请看下面编辑的答案,看起来是
$
引起了问题。如果您的正则表达式前面是
^
,后面是
$
,则只有当所需表达式在该行前后没有字符时,它才会匹配。我的问题出错了。value2=“30.Jul.2019”Nck,还有一件事我有一个与时间匹配的下一个正则表达式。因此,如果与日期成功匹配,它将读取同一行并检查是否与时间匹配。同一行是:2019年7月30日这是我想匹配的行15:04:09正则表达式是“^([0-1]?\d | 2[0-3])(?:([0-5]?\d))(?:([0-5]?\d))?”,您可以检查它是否工作正常吗?您必须编辑您的问题,发布一个新的,或者去聊天。为了提供帮助,您还需要您尝试过的regex/代码、结果和预期行为。从评论来看,我们真的无法做到这一点,如果我们做到了,mods可能会生气。让我知道你的决定。