我正在编写脚本,遍历大量电子邮件,寻找两个字符串。

它将找到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)) {

}

最佳答案

您必须隔离时间戳记,并将其余的放到另一个交替中:

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

Debuggex Demo

关于php - 如何在此正则表达式中仅获得一场比赛?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22157090/

10-09 23:25