为什么我的PHP preg_match匹配第二个子模式而不是第一个?

时间:2013-09-17 07:28:05

标签: php preg-match

我的PHP代码是:

$pattern = '/(Sun|Mon|Tue|Wed|Thu|Fri|Sat)(,| )[\d]{1,2}[A-Z]{1,1}[a-z]{2,2}/';
if (preg_match($pattern, $content, $matches, PREG_OFFSET_CAPTURE)){
    $name = str_replace("(M1) ", "", substr($content, 0, $matches[0][1]));
    $date = substr($content, $matches[0][1], 15);
}

一个匹配子模式可以正常工作。喜欢:

  
B'Meadow Alarm Tue,17Sep 19:48 Ur001 General User Closing By User 
name:  B'Meadow Alarm  
date:  Tue,17Sep 19:48

我的字符串是:

(M1) B'Meadow Alarm Tue,17Sep 19:48 Ur001 General User Closing By User (M2) B'Meadow Alarm Tue,18Nov 09:18 Ur001 General User Closing By User

应该是:

name:  B'Meadow Alarm  
date:  Tue,17Sep 19:48

但实际结果是:

name:  B'Meadow Alarm Tue,17Sep 19:48 Ur001 General User Closing By User (M2) B'Meadow Alarm  
date:  Tue,18Nov 09:18  

问题:我的模式有什么问题?还是代码?

----------

修改

对不起,伙计们!我的一位同事将服务器存储库中的这个正则表达式更改为以下一个:
'/(。*)(太阳|周一|周二|周三|周四|周五|周六)(,|)[\ d] {1,2} [AZ] {1,1} [az] {2,2} (。*)/';

但他不承诺git。这就是我无法在本地存储库中看到这些更改的原因。 (。*)导致问题。

1 个答案:

答案 0 :(得分:1)

您的模式或代码都不对。您的代码输出完全符合预期。