0

I want to use RegEx to extract the time that follows after the text "Received:by", but it has many values, and I want to store many values in one parameter.

I've created a RegEx like so:

Received:by.+(?P<Hop_Time>\d\d:\d\d:\d\d)

but I got only the last value of Hop_time.

This is example of the kind of text that I want to extract Hop_time from:

Received:by mail-ed1-f69.google.com with SMTP id b21so4825939edt.18          for <budsarin.temsawat@aaa.co.th>; Wed  26 Jun 2019 18:04:32 -0700 (PDT) X-Google-DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed;          d=1e100.net; s=20161025;          h=x-gm-message-state:mime-version:references:in-reply-to:from:date           :message-id:subject:to:cc;          bh=q04dTGosad+dTkX0DLE3TZT1LvNQX45YXfBh9AMeFco=;          b=a5lzAB+U25QwdRDIw/0H1CT0SGRZNRyiTRNJ1jg5kgfg4IPhyOeWkqm72Ay           w1VV8x3kVzv2jgAyF9/W57NcN43CyejW+ag086fJy2LmqMM03q/Voz7A89av           nxsiIx0V5BOWkcSl3XdBOqQD9imxNL9Bermp548jum51kOopBX6uALrW+Yy           qfSravlh8ONQ8YTOC47iSPBQhCh0b1lMO51p5e6zeIwcLUO62YYl/N3DUKDeN           vduYOj/HAEVQXqfO64Fepx6U2QAi2Lg6hM2zcdKMgDR/Wdj/QehmFj+Fl           Ptag== X-Gm-Message-State:APjAAAUcvfjYPCkT4REkr2t4IE6NeIZTGRWloRcKwy0gyZHb   MynBUQciUYH9gQifGU0TaLv4ddVqHoFhsAXIsniMfUuXeetryhOwO+1bS26ze2SA   fvZIq6qEaOgJlMJZt9nUOMYE2WspxuBWVosL2kKutE99i5q9VzsMDuK+2wlVL4y   MZOpqMIpA6mfKRnzX1cwrcvA9PPbiWI/x7Ldg0kx+kCRuuJQ== X-Received:by 2002:a17:906:3ed1:: with SMTP id d17mr602603ejj.285.1561597403255;          Wed  26 Jun 2019 18:03:23 -0700 (PDT) X-Google-Smtp-Source:APXvYqw4u4lwcGK+asj4XNave7dmVhuneOG1zr46FOmbsgkj0gup9KvdYrzB1LJXS2zMNXf+I= X-Received:by 2002:a17:906:3ed1:: with SMTP id d17mr602584ejj.285.1561597403013;   Wed  26 Jun 2019 18:03:23 -0700 (PDT) MIME-Version:1.0 References:<CAB-UEWaNHyJz4EyotLZA@mail.gmail.com>   <CAB-UEWavdVz0J+ySP5u_GGZm+DVRg@mail.gmail.com>   <CANAFqSiHpjuU5VNQ57MSwc9FuGfwMEu49EvSQ@mail.gmail.com>   <CAB-UEWZBhEzT2QxwsBk-XBfzf7j0qHr5O7tyUxwQw@mail.gmail.com> <CANAFqSiKEMRGkFsA2awnVg5zKSmih6iGOAv7Ng@mail.gmail.com> In-Reply-To:<CANAFqSiKEMRGkFsA2=4wnVg5zKSmih6iGOAv7Ng@mail.gmail.com> From:Sirisri Jitvatkun <sirisri.jitvatkun@bbb.co.th> Date:Thu  27 Jun 2019 08:03:11 +0700

From this example text, I want to store three values of Hop_time: "18:04:32", "18:03:23", "18:03:23".

Can I do this with RegEx? If so, how should I modify my existing attempt to make it work?

Toto
  • 83,193
  • 59
  • 77
  • 109

2 Answers2

1

Use a non-greedy quantifier so that .+ won't go across multiple occurrences of the pattern.

Received:by.+?(?P<Hop_Time>\d\d:\d\d:\d\d)

DEMO

How can I write a regex which matches non greedy?

Barmar
  • 596,455
  • 48
  • 393
  • 495
0

This expression might also work:

Received\s*:\s*by.*?(?P<Hop_Time>[0-9]{2}:[0-9]{2}:[0-9]{2})

which is explained on the top right panel of this demo, if you wish to explore further or modify it, and in this link, you can watch how it would match against some sample inputs step by step, if you like.

Test

$re = '/Received\s*:\s*by.*?(?P<Hop_Time>[0-9]{2}:[0-9]{2}:[0-9]{2})/s';
$str = 'Received:by mail-ed1-f69.google.com with SMTP id b21so4825939edt.18          for <budsarin.temsawat@aaa.co.th>; Wed  26 Jun 2019 18:04:32 -0700 (PDT) X-Google-DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed;          d=1e100.net; s=20161025;          h=x-gm-message-state:mime-version:references:in-reply-to:from:date           :message-id:subject:to:cc;          bh=q04dTGosad+dTkX0DLE3TZT1LvNQX45YXfBh9AMeFco=;          b=a5lzAB+U25QwdRDIw/0H1CT0SGRZNRyiTRNJ1jg5kgfg4IPhyOeWkqm72Ay           w1VV8x3kVzv2jgAyF9/W57NcN43CyejW+ag086fJy2LmqMM03q/Voz7A89av           nxsiIx0V5BOWkcSl3XdBOqQD9imxNL9Bermp548jum51kOopBX6uALrW+Yy           qfSravlh8ONQ8YTOC47iSPBQhCh0b1lMO51p5e6zeIwcLUO62YYl/N3DUKDeN           vduYOj/HAEVQXqfO64Fepx6U2QAi2Lg6hM2zcdKMgDR/Wdj/QehmFj+Fl           Ptag== X-Gm-Message-State:APjAAAUcvfjYPCkT4REkr2t4IE6NeIZTGRWloRcKwy0gyZHb   MynBUQciUYH9gQifGU0TaLv4ddVqHoFhsAXIsniMfUuXeetryhOwO+1bS26ze2SA   fvZIq6qEaOgJlMJZt9nUOMYE2WspxuBWVosL2kKutE99i5q9VzsMDuK+2wlVL4y   MZOpqMIpA6mfKRnzX1cwrcvA9PPbiWI/x7Ldg0kx+kCRuuJQ== X-Received:by 2002:a17:906:3ed1:: with SMTP id d17mr602603ejj.285.1561597403255;          Wed  26 Jun 2019 18:03:23 -0700 (PDT) X-Google-Smtp-Source:APXvYqw4u4lwcGK+asj4XNave7dmVhuneOG1zr46FOmbsgkj0gup9KvdYrzB1LJXS2zMNXf+I= X-Received:by 2002:a17:906:3ed1:: with SMTP id d17mr602584ejj.285.1561597403013;   Wed  26 Jun 2019 18:03:23 -0700 (PDT) MIME-Version:1.0 References:<CAB-UEWaNHyJz4EyotLZA@mail.gmail.com>   <CAB-UEWavdVz0J+ySP5u_GGZm+DVRg@mail.gmail.com>   <CANAFqSiHpjuU5VNQ57MSwc9FuGfwMEu49EvSQ@mail.gmail.com>   <CAB-UEWZBhEzT2QxwsBk-XBfzf7j0qHr5O7tyUxwQw@mail.gmail.com> <CANAFqSiKEMRGkFsA2awnVg5zKSmih6iGOAv7Ng@mail.gmail.com> In-Reply-To:<CANAFqSiKEMRGkFsA2=4wnVg5zKSmih6iGOAv7Ng@mail.gmail.com> From:Sirisri Jitvatkun <sirisri.jitvatkun@bbb.co.th> Date:Thu  27 Jun 2019 08:03:11 +0700
';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

var_dump($matches);
Community
  • 1
  • 1
Emma
  • 1
  • 9
  • 28
  • 53