I have a multiple line string like following:
END IF;
EXECUTE IMMEDIATE ' CREATE INDEX #idx1
ON somename ( row_id,
something)';
IF v_sys_error 0 THEN
GOTO SQL_ERROR;
END IF;
I wish to capture the part in bold (meaning everything from EXECUTE IMMEDIATE to next semicolon.
I have the following regex but how can I change it to work with multiple lines?
(EXECUTE).*;
(?m) makes the regex multiline - allows you to match beginning (^) and end ($) of string operators (in this case, to match the beginnings and ends of individual lines, rather than the whole string):
/(?m)(EXECUTE).*?;/
(?s) - dotall flag - makes the regex match newlines with . (dot) operators:
/(?s)(EXECUTE).*?;/