$re = '/(?<prm>\w+)\s+.*:\s*=\s*\'(?<tbl>\w+)\'\s*;(?:.|\n)*(?:alter|create)\s+table\s+\'\s*\|\|\s*(\k<prm>\s+)/iU';
$str = 'DECLARE
COUNTER NUMBER(10) := 0;
pTABLENAME VARCHAR2(100) := \'ALM_AL1\';
pCOLUMNNAME VARCHAR2(100) := \'FLOATACCRUALDCBASISDAYC\';
pDATATYPE VARCHAR2(100) := \'NVARCHAR2(50) NULL\';
pSQL VARCHAR2(32000) := \'
ALTER TABLE \' || pTABLENAME || \' ADD \' || pCOLUMNNAME || \' \' || pDATATYPE;
BEGIN
SELECT COUNT(0) INTO COUNTER FROM USER_TAB_COLUMNS WHERE TABLE_NAME=UPPER(pTABLENAME) AND COLUMN_NAME=UPPER(pCOLUMNNAME);
IF COUNTER>0 THEN
dbms_output.put_line(pTABLENAME || \' tablosunda \' || pCOLUMNNAME || \' kolonu var.\');
ELSE
EXECUTE IMMEDIATE pSQL;
dbms_output.put_line(pTABLENAME || \' tablosuna\' || pCOLUMNNAME || \' kolonu oluÅ?turuldu.\');
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(\'HATA: \' || pSQL || \' -> SQLERRM: \' || SQLERRM);
END;
/
DECLARE
COUNTER NUMBER(10) := 0;
pTABLENAME VARCHAR2(100) := \'ALM_AL2\';
pCOLUMNNAME VARCHAR2(100) := \'RATETYPETYPE\';
pDATATYPE VARCHAR2(100) := \'NVARCHAR2(40) NULL\';
pSQL VARCHAR2(32000) := \'
ALTER TABLE \' || pTABLENAME || \' ADD \' || pCOLUMNNAME || \' \' || pDATATYPE;
BEGIN
SELECT COUNT(0) INTO COUNTER FROM USER_TAB_COLUMNS WHERE TABLE_NAME=UPPER(pTABLENAME) AND COLUMN_NAME=UPPER(pCOLUMNNAME);
IF COUNTER>0 THEN
dbms_output.put_line(pTABLENAME || \' tablosunda \' || pCOLUMNNAME || \' kolonu var.\');
ELSE
EXECUTE IMMEDIATE pSQL;
dbms_output.put_line(pTABLENAME || \' tablosuna\' || pCOLUMNNAME || \' kolonu oluÅ?turuldu.\');
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(\'HATA: \' || pSQL || \' -> SQLERRM: \' || SQLERRM);
END;
/
DECLARE
COUNTER NUMBER(10) := 0;
pTABLENAME VARCHAR2(100) := \'ALM_AL3\';
pCOLUMNNAME VARCHAR2(100) := \'PAYCURRENCYUNIT\';
pDATATYPE VARCHAR2(100) := \'NVARCHAR2(3) NULL\';
pSQL VARCHAR2(32000) := \'
ALTER TABLE \' || pTABLENAME || \' ADD \' || pCOLUMNNAME || \' \' || pDATATYPE;
BEGIN
SELECT COUNT(0) INTO COUNTER FROM USER_TAB_COLUMNS WHERE TABLE_NAME=UPPER(pTABLENAME) AND COLUMN_NAME=UPPER(pCOLUMNNAME);
IF COUNTER>0 THEN
dbms_output.put_line(pTABLENAME || \' tablosunda \' || pCOLUMNNAME || \' kolonu var.\');
ELSE
EXECUTE IMMEDIATE pSQL;
dbms_output.put_line(pTABLENAME || \' tablosuna\' || pCOLUMNNAME || \' kolonu oluÅ?turuldu.\');
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(\'HATA: \' || pSQL || \' -> SQLERRM: \' || SQLERRM);
END;
/';
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