【发布时间】:2015-03-14 22:26:16
【问题描述】:
我有一个匹配时间范围的正则表达式:
(([0-2]?[0-9]:[0-5][0-9]\s*)-(\s*[0-2]?[0-9]:[0-5][0-9]))
但是,我需要一个正则表达式,它可以提取字符串中除时间范围之外的所有内容,例如:"June 12, 2015 13:30 - 14:00"(即"June 12, 2015"),但我似乎做不到。
我尝试同时使用前瞻和后瞻,如下所示,但它们似乎不起作用(至少对我而言;)。
(?<!(([0-2]?[0-9]:[0-5][0-9]\s*)-(\s*[0-2]?[0-9]:[0-5][0-9])))
【问题讨论】:
-
为什么不使用正则表达式来将匹配的字符串替换为空字符串?应用程序是什么?我只是问,因为包含 NOT 的正则表达式通常比简单的字符串替换成本更高。
-
@OozeMeister:情况并非总是如此,而且大多数情况下是因为这种模式写得不好(使用像
(?:(?!thestringiwanttoavoid).)+这样的愚蠢行为) -
应用程序将用户在命令行上提供的日期和时间转换为不同的时区。只要只提供一个日期和/或时间,我的应用程序就可以正常工作。我的问题是时间范围(如在 OP 中)。虽然我可以使用上面的正则表达式处理时间范围,但我想单独处理日期(如果提供)。
标签: regex