如何在以下字符串中找到文本?

时间:2015-06-01 16:42:57

标签: regex

我正在尝试从包含3个不同时间戳的字符串中提取时间。

字符串:

Current time at \\\\gt2-dmsql1cst is 6/1/2015 11:59:49 AM\r\n\r\nLocal time (G
MT-05:00) at \\\\gt2-dmsql1cst is 6/1/2015 10:59:49 AM\r\n\r\nThe command comple
ted successfully.\r\n\r\n

我只需要"Local Time"之后的时间。

我怎么能抓住这个?

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式匹配Local time之后的所有内容,然后在此时间设置capturing group

(?si)Local time.*?(\d{2}:\d{2}:\d{2}\s+[AP]M)

请参阅demo

正则表达式解释:

  • (?si) - 忽略大小写并使.与换行符匹配的选项
  • Local time.*? - 匹配Local time和任何其他字符
  • (\d{2}:\d{2}:\d{2}\s+[AP]M) - 包含时间信息的捕获组:
    • \d{2} - 匹配2位数字
    • : - 匹配文字冒号
    • \d{2}:\d{2} - 匹配2位数字,冒号和2位数字
    • \s+ - 匹配1个或更多空格
    • [AP]M - 匹配AMPMam ...

答案 1 :(得分:1)

您可以使用以下日期和时间:

/Local time.*?((?:\d{1,2}\/){2}\d{4}\s+\d{2}:\d{2}:\d{2}\s+[AP]M)/gsi

请参阅DEMO