我正在编写脚本,遍历大量电子邮件,寻找两个字符串。
它将找到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/