Delphi中的正则表达式

时间:2014-04-22 16:33:18

标签: regex pcre

我有这个正则表达式来检查HH:MM:SS格式的时间戳:

(20|21|22|23|[01]\d|\d)(([:][0-5]\d){1,2})

但我想忽略前面带有“run time =”

的时间戳
00:01:02 -> YES
compile time = 00:01:02 -> YES (only 00:01:02)
run time = 00:01:02 -> NO

这可以使用正则表达式完成吗?

3 个答案:

答案 0 :(得分:0)

negative Lookahead会这样做:

^(?!run time = ).*?(20|21|22|23|[01]\\d|\\d)(([:][0-5]\\d){1,2})

http://www.regular-expressions.info/lookaround.html

答案 1 :(得分:0)

将Tuga建议的负面预测与CAUS建议的正确解析HH:MM:SS相结合,并添加一个捕获组,以便您只能提取HH:MM:SS部分:

(?!run time = ).*?((?:2[0-4]|[10]\d):[0-5]\d:[0-5]\d)

答案 2 :(得分:0)

  

我想忽略前面带有"运行时间="

的时间戳

为了真正满足这一要求,我们需要一个负面的背后隐藏,这是PCRE提供的。

(?<!run time = )(([01]\d|2[0-3])(:[0-5]\d){2})