Просто подумал, что могу указать, что регулярное выражение, данное Бартом, будет соответствовать базовому одноуровневому блоку EVALUATE
, однако оно НЕ справится с вложенными EVALUATE
с.
Например, попробуйте регулярное выражение в следующем примере:
EVALAUTE TRUE
WHEN FILE-ERROR
EVALUATE ERROR-CODE
WHEN FILE-NOT-FOUND
DISPLAY "File Not Found!"
WHEN ACCESS-DENIED
DISPLAY "Access Denied!"
END-EVALUATE
WHEN OTHER
DISPLAY "Success!"
END-EVALUATE
Другим подходом будет построчное чтение исходного кода Cobol и для каждого EVALUATE
, найденного в строке (это не внутри кавычек), увеличить оценку «уровень».Таким образом, вы можете отслеживать, где находитесь на вложенных уровнях.
Кроме того, ОП сказал, что он ищет способ получить текст " между " EVALUATE
иEND-EVALUATE
, что, по-видимому, подразумевает, что они не должны быть включены.Может быть, я неверно истолковал это, но если это является требованием, тогда регулярное выражение неправильно включает ключевые слова.