Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Примеры регулярных выражений 
Author Message
Batya



PostPosted: Mon Jul 20, 2026 12:28    Post subject: Reply with quote

Спасибо за ответы!
Quote:
Найти:
(?m-s)^(_\|_\d+_\|)(.+?\r\n)\1
Заменить:
\2

К сожалению, не то Sad
Quote:
этот шаблон стабильный или варьируется?

Шаблон варьируется.
Постараюсь описать в более широком смысле...
Есть некоторое приложение, которое формирует логи работы. При этом часть логируемых данных записывается в некотором табличном виде. Суть задачи - скопировать из большого лога часть текста, описывающего таблицу, и не сохраняя в отдельный файл в Notepad++ макросом преобразовать этот текст таким образом, чтобы его потом скопировать и вставить в Excel уже в виде нормальной таблицы.
В исходном логе строки таблицы могут быть на отдельных строках, а могут быть склеены. Ключевая особенность в том, что начало табличного текста и начало каждой строки начинается с одинакового фрагмента, который меняется для каждого лога. Количество строк всегда разное. Количество склеенных строк (с удалённым переносом строк) заранее не известно. Проблема именно в том, что иногда случайны образом переносы строк удалены, и строки склеены.
Примеры:
Code:
_|_78_|_чило124_|_текст125_|_78_|_текст126_|_число127
_|_78_|_ля-ля-ля128_|_129
_|_78_|_123_|_124_|_78_|_127_|_128

Code:
_|_78_|_чило124_|_текст125
_|_78_|_текст126_|_число127
_|_78_|_ля-ля-ля128_|_129
_|_78_|_123_|_124_|_78_|_127_|_128

Code:
_|_78_|_чило124_|_текст125_|_78_|_текст126_|_число127_|_78_|_ля-ля-ля128_|_129_|_78_|_123_|_124_|_78_|_127_|_128

Сам по себе начальный фрагмент полезной информации не несёт. Его можно заменить, а можно и оставить. В итоге хочу, чтобы получилось так:
Code:
чило124_|_текст125
текст126_|_число127
ля-ля-ля128_|_129
123_|_124
127_|_128

или так
Code:
_|_78_|_чило124_|_текст125
_|_78_|_текст126_|_число127
_|_78_|_ля-ля-ля128_|_129
_|_78_|_123_|_124
_|_78_|_127_|_128

После замены убрать лишние пустые строки - не проблема. Возможное попадание хороших данных в совпадение с начальным фрагментом и замена их на перенос строки - не страшно.
Думаю, что задачу можно решить макросом на vba для вставки в Excel, но хотелось именно решить через регулярные выражения - давно мечтал их полностью освоить.
_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Mon Jul 20, 2026 13:16; edited 1 time in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group