正则表达式:不在匹配的组中包含一些带括号的子模式

时间:2010-11-26 02:47:02

标签: php regex

例如,对于文本Mon 01/01/2010 01:00:00 some other text followed,我只想匹配日期段,所以我使用以下PHP代码,

$text = 'Mon 01/01/2010 01:00:00 some other text followed';
$pattern = '/(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(0-9\/)+?.*/';
preg_match($pattern, $text, $matches);
$date = $matches[2];

是否可以不在匹配的组中包含第一个带括号的子模式(本示例中的星期几段),以便我们可以使用$matches[1]而不是$matches[2]来获取日期细分?我记得我们可以通过在正则表达式模式中设置一些东西来做到这一点,但我无法谷歌答案。

1 个答案:

答案 0 :(得分:4)

使用(?:...)代替(...)将创建非分组匹配。

$pattern = '/(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(0-9\/)+?.*/';