Это регулярное выражение будет работать для обоих (проверено):
preg_match('#http://(\w+.)?vimeo.com/(video/|moogaloop\.swf\?clip_id=)\w+#i', $content);
обновление
Для захвата clip_id
используйте это скорректированное регулярное выражение:
preg_match('#http://(?:\w+.)?vimeo.com/(?:video/|moogaloop\.swf\?clip_id=)(\w+)#i', $content, $match);
$match[1]
содержит идентификатор клипа
По сути, добавление '?:' Внутри каждого из '()' говорит о том, что он не должен отображаться в массиве $ match.