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;