1

我正在尝试在 Spiceworks 中运行正则表达式来解析电子邮件标题,以选择第一个时间实例以进行票证分配。正则表达式本身可以工作,但它会拾取所有时间实例,而不仅仅是一个。

这是正则表达式:\.*(0[1]|1[3-7]):\d\d:\d\d

我试图通过这样做来实现非贪婪:\.*?(0[1]|1[3-7]):\d\d:\d\d 但这似乎不起作用。将问号放在量词前面并没有为此做任何事情。

什么是使这个正则表达式不贪婪或只选择第一个实例的好解决方案?

谢谢,

安德鲁·N。

编辑:我试图从正则表达式中实现的是“13:04:57”而不是整个日期。

示例字符串:接收:由 127.0.0.1 使用 SMTP id co5csp22954317qdb;2015 年 5 月 6 日,星期三 13:02:22 -0700 (PDT) X-收到:由 127.0.0.1 发送,SMTP id 为 j185mr26699743oig.68.1430928141923;2015 年 5 月 6 日,星期三 13:02:21 -0700(太平洋夏令时间)

4

2 回答 2

1

您可以使用这个基于前瞻的正则表达式来匹配您的正则表达式匹配的时间的第一个实例:

/^(?:(?!(?:0[1]|1[3-7]):\d\d:\d\d).)*((?:0[1]|1[3-7]):\d\d:\d\d)/m

(?!...)是一个负前瞻,确保在匹配时间之前没有其他时间实例,因此仅匹配第一个实例。

正则表达式演示

于 2015-06-04T17:15:05.537 回答
0

{1} 与前一个模式匹配 1 次。如果您发布示例标题,我可以测试 REGEX 以确保一切正确。试试下面的。

(.*(0[1]|1[3-7]):\d\d:\d\d){1}
于 2015-06-04T16:16:16.883 回答