如何在这个正则表达式中只获得一场比赛?

Kri*_*eth 2 php regex

我正在制作一个脚本,通过大量的电子邮件寻找两个字符串.

它会发现been all shipped on [timestamp here]shipped by the seller on [timestamp here].

现在我得到一个空匹配,$res[1]如果它只找到第二个字符串,并且$res[2]如果它只找到第一个字符串则为空.我如何解决这个问题,以便始终填写$res[1]所找到的时间戳?

if (preg_match("/been all shipped on ([0-9]{4}\.[0-9]{2}\.[0-9]{2} [0-9]{2}:[0-9]{2})|shipped by the seller on ([0-9]{4}\.[0-9]{2}\.[0-9]{2} [0-9]{2}:[0-9]{2})/", strip_tags($message), $res)) {

}
Run Code Online (Sandbox Code Playgroud)

Aks*_*ose 6

您必须隔离时间戳并将其余内容置于交替中:

"/(?:been all shipped|shipped by the seller) on (\d{4}\.\d{2}\.\d{2} \d{2}:\d{2})/"
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示