【发布时间】:2015-05-06 05:47:40
【问题描述】:
有点延续我的previous 问题:
我遇到了另一种我必须注意的模式,它看起来像这样:
Tue 01/24/12 1/24/2012 2:56:25 PM
在这种情况下,我只希望它与 1/24/2012 2:56:25 PM 部分匹配。
我之前的表达式似乎与01/24/12 1 或类似内容上的上述输入相匹配。
大部分情况下,我可以通过使用以下表达式来完成这项工作:
(?:\w\w\w (0?[1-9]|1[012])[- \/.](0?[1-9]|[12][0-9]|3[01])[- \/.](19|20)?\d\d)? (0?[1-9]|1[012])[- \/.](0?[1-9]|[12][0-9]|3[01])[- \/.](19|20)?\d\d((?: |\s*-\s*)(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)( AM| PM)?)?
这里的问题是我不想在我的匹配中实际包含Tue 01/24/12 位;我想确保那部分不匹配。我试图通过将?! 修饰符添加到第一个非捕获组来使用否定的前瞻性,但它并没有完全按照我的想法做。
【问题讨论】:
-
请看regex101.com/r/tR0yT3/1,我想您也想在输入字符串中捕获
01/24/12。 -
我试图只捕获从第二个日期开始的日期(示例中为
1/24/2012),因为在捕获它之后,我会将其转换为 .NET 日期时间对象。跨度> -
是的,但它是一个单独的匹配项。请再看一下regex101.com/r/tR0yT3/2 和匹配项。你在使用 C# 吗?请发布您的代码。
-
您的正则表达式将在
01/24/12 1/24/2012 2:56:25 PM中找到 2 个匹配项。否则,请重新制定要求。
标签: regex