У меня есть текстовый файл с данными, такими как:RegEx - Как найти и заменить слова в большом текстовом файле?
ALTER TABLE ONLY document_labels
ADD CONSTRAINT fk_g71qgs6l2ufr3170u44j5fpk3 FOREIGN KEY (label_id) REFERENCES application_value(id);
ALTER TABLE ONLY rule_group_functionality_mapping
ADD CONSTRAINT fk_g8twyunj9bm096sqywdi8rcx8 FOREIGN KEY (rule_group) REFERENCES application_value(id);
ALTER TABLE ONLY time_track
ADD CONSTRAINT fk_gmpyguqbpm1ndjjsxvt03wq4g FOREIGN KEY (user_id) REFERENCES user_account(user_id);
Я хочу, чтобы заменить все слова, которые, как
fk_<some gibberish>
с
fk_<word between ONLY and nextline>_<word between REFERENCES and starting brace>
К примеру, изменения:
ALTER TABLE ONLY document_labels
ADD CONSTRAINT fk_g71qgs6l2ufr3170u44j5fpk3 FOREIGN KEY (label_id)
REFERENCES application_value(id);
To:
ALTER TABLE ONLY document_labels
ADD CONSTRAINT fk_document_labels_application_value FOREIGN KEY (label_id)
REFERENCES application_value(id);
До сих пор, я могу по отдельности искать слова, которые мне нужны, но не смог выполнить замену.
Чтобы найти fk_someGibberish в тексте я делаю:
(?s)(?<=fk_)(.*?)(?= FOREIGN KEY)
Чтобы найти слово между ТОЛЬКО и nextline у меня есть:
(?s)(?<=ONLY)(.*?)(?=\n)
и найти слово между ссылками и начиная скобку у меня есть:
(?s)(?<=REFERENCES)(.*?)(?=\()
Все они были проверены на RegEx101.com
Какой инструмент/программа вы используете? –
Я думаю, вы связались с неправильной скрипкой regex101. – trincot
Я попробовал это с помощью онлайн-инструмента regex101 (ссылка размещена). Но это не имеет большого значения, если он в сети. У меня есть TextMate и Sublime Text на моем Mac, если это помогает. Спасибо – EMM