$re = '/http:\/\/example\.com\/foo(\/[\w]+\b)?[^\/]/';
$str = 'http://example.com/foo/apple
http://example.com/foo/bear
http://example.com/foo/cake
http://example.com/baa/apple
http://example.com/foo/apple/cake/bar/1
http://example.com/foo/bear/camel/bar/2
http://example.com/foo/bear/cake/bar/two
http://example.com/foo/bear/camel/tar/2
http://example.com/foo/bear/camel
http://example.com/foo/bear/camel/
http://example.com/foo/bear/camel/tar/2/';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php