$re = '/(?i)(^ *)CREATE\s+TABLE\s+[^()]*\(([^()]*\([^()]*\))*[^()]*\)/m';
$str = 'CREATE TABLE [dbo].[m_category_link](
[category_link_id] [int] NOT NULL,
[category_id] [int] NULL,
[parent_id] [int] NULL,
[child_id] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[m_daihyou_syouhin_wk](
[daihyou_cd] [varchar](30) NOT NULL,
[syuuyaku_cd] [varchar](30) NULL,
[daihyou_mei] as ([daihyou_cd]+ [syuuyaku_cd]),
[daihyou_cd] [varchar](30) NOT NULL,
[syuuyaku_cd] [timestamp]
)';
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