<?php
preg_match( "@\[gallery ([^\]]+)\]@", "foo [gallery GALLERYNAME] bar", $match );
var_dump( $match );
// $match[ 1 ] should contain "GALLERYNAME"
?>
Как альтернатива:
<?php
preg_match_all( "@\[gallery ([^\]]+)\]@m", "
foo [gallery GALLERYNAME1] bar
foo [gallery GALLERYNAME2] bar
foo [gallery GALLERYNAME3] bar
", $match );
var_dump( $match );
// $match[ 1 ] should contain an array containing the desired matches
?>