1) Я пытаюсь сопоставить полные части строки с регулярным выражением. Я думаю, что есть проблема с жадностью. Ниже приведена структура pl / sql, которую мы рассматриваем
ERRORHANDLER
WHEN TRUE THEN
IF SOMETHING THEN
ELSE
END IF;
WHEN FALSE THEN
END;
Ниже приведено регулярное выражение, которое я подставил в соответствие ^ (\ s *) ERRORHANDLER ((?! FUNCTION).) END [(\ s ) (\ w +) |;]
Где,
^(\s*)ERRORHANDLER
- для сопоставления случайных пробелов и статической строки ERRORHANDLER, которая всегда будет началом шаблона.
((?!FUNCTION).)*
- жадный взгляд с отрицательным взглядом *
END[(\s*)(\w+)|;]
- для сопоставления END и необязательной строки, заканчивающейся точкой с запятой.
хотя я уверен в подходе к совпадению строки, но это регулярное выражение не соответствует ей должным образом.
Ожидаемый результат:
полное совпадение для
ERRORHANDLER
WHEN TRUE THEN
IF SOMETHING THEN
ELSE
END IF;
WHEN FALSE THEN
END;