Я сталкиваюсь с геркулесовой задачей в многострочном поиске и замене (объяснено в отдельных частях).
Решение я ищу включает в себя использование регулярных выражений в Notepad++ либо встроенный Find & Replace или с поиском многострочного и заменить диалог доступен на NPPtoolbucket плагин.
Это пример извлечения входного файла:
ALPHA('Hello John')
IGNORE111
IGNORE222
BETA('Hi Mary') 
Мне нужно заменить Привет Мэри (четвертая строка) на Привет Джон (контент извлекается из первой строки). т.е. фактический контент в четвертой строке между BETA ('и') должен быть заменен контентом, полученным между ALPHA ('и') из первой строки.
Желаемый результат должен быть:
ALPHA('Hello John')
IGNORE111
IGNORE222
BETA('Hello John')
Проблема, с которой я сталкиваюсь, заключается в том, что у меня 47 файлов IFC (по 12000 строк в каждом). Эти файлы имеют имя сборки в первой строке (уникальное для каждого файла IFC), и его необходимо использовать для замены содержимого где-то в строках 48, 87 и во многих других строках во всех 47 файлах IFC. Все идет по определенному шаблону. Можете ли вы предложить какой-нибудь трюк для достижения этого с помощью регулярных выражений?
Скажи как - найти с помощью (ALPHA\(')(.*)(')(NEW_SYNTAX_I_SEEKING)(BETA\(')(.*)(')
и заменить на \1\2\3\4\5\2\7
где
(ALPHA\(') станет ref \1 
(.*) будет возвращен ref \2 , он будет разделен как -> Hello John
(') вернется ref \3
(NEW_SYNTAX_I'M_SEEKING) вернется назад ref \4 ; это будет новый синтаксис регулярных выражений, который я ищу, который будет извлекать контент, распределенный по нескольким строкам, и тот, который я не хочу никаких изменений
(BETA\(') станет ref \5
(.*) станет back ref \6 , он будет разделен как -> Привет, Мэри, поэтому мы можем использовать back ref \ 2 для замены back ref \6 .
(') вернется ref \7
Надеюсь, я правильно сформулировал свой вопрос и намерение. Я высоко ценю любую помощь, оказанную.
Ура, JJ
