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 

Сложный поиск с заменой
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
torygmile



Joined: 18 Aug 2011
Posts: 10
Location: Россия

Post (Separately) Posted: Thu Aug 18, 2011 01:40    Post subject: Сложный поиск с заменой Reply with quote

Здравствуйте.
Возможно ли в ТС сделать поиск с заменой, чтобы при помощи регулярных выражений найти группу символов по типу xyz***abc в первом текстовом файле и заменить ими во втором xyz***abc? Т.е. группа символов с одного файла должна заменять группу символов в другом при совпадении начала и конца группы. Маска при этом должна быть и для изменяющихся символов (***) и для одинаковой подгруппы (abc), т.к. групп символов несколько тысяч.

Приведу пример, в первом файле есть группы символов
om/jrqa0dj9fceq/FRONT
om/h8f3m5hqrgbx/Chin
om/mypjlei4bnvv/DAIL

а заменить их надо на группы из второго файла
om/1916470106/FRONT
om/4574sg7647/Chin
om/5645rg4654/DAIL

И таких групп символов несколько тысяч...


Last edited by torygmile on Thu Aug 18, 2011 05:26; edited 2 times in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Aug 18, 2011 01:53    Post subject: Reply with quote

Если есть точное соответствие начала и конца строк, то можно легко и без регекспов обойтись. А под точным соответствием в данном случае можно понимать наличие в каждой строке двух обрамляющих символов, например, "/" вместе с близлежащими символами.

Вопросы:
1) А есть такие строки, где окончания совпадают, а префиксы - нет?
2) Почему речь идёт о началах и концах групп, а не строк? Примеры этот момент не проясняют.


Last edited by Flasher on Thu Aug 18, 2011 02:35; edited 1 time in total
Back to top
View user's profile Send private message
torygmile



Joined: 18 Aug 2011
Posts: 10
Location: Россия

Post (Separately) Posted: Thu Aug 18, 2011 02:33    Post subject: Reply with quote

Нет, есть подгруппа из 6 символов которая одинакова вначале всех групп, и начало маски будет по ней.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Aug 18, 2011 02:38    Post subject: Reply with quote

Если нет, то достаточно находить строки с одинаковым окончанием и заменять в исправляемом файле строку на строку из другого файла. Или есть какой-то подвох?
Back to top
View user's profile Send private message
torygmile



Joined: 18 Aug 2011
Posts: 10
Location: Россия

Post (Separately) Posted: Thu Aug 18, 2011 02:42    Post subject: Reply with quote

Все верно, но заменять не строку а группу символов по маске (с одинаковым началом и концом).
Т.е. несколько тысяч групп символов с одного файла должны заменить соответствующие по маске в другом.
И конец у каждой группы символов различен, совпадает только с группой в другом файле.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Aug 18, 2011 02:45    Post subject: Reply with quote

Я не понимаю, зачем заменять группу символов, а не строк целиком, если строки в начале и в конце совпадают?
И зачем одинаковое начала проверять, если только что было подтверждено, что строк с одинаковым окончанием, но с разным концом нет?
Back to top
View user's profile Send private message
torygmile



Joined: 18 Aug 2011
Posts: 10
Location: Россия

Post (Separately) Posted: Thu Aug 18, 2011 02:49    Post subject: Reply with quote

Нет, я с самого начала писал что есть одинаковая подгруппа символов в начале каждой группы, но группа не обязательно начинается с начала строки.
Строки целиком изменять нельзя, изменить нужно лишь определенные границами группы.
И эти группы с совпадающим концом будут на разных строках в первом и втором файлах. Группа символов 2-й строки 1-го файла будет совпадать с группой 1037 строки 2-го к примеру Very Happy
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Aug 18, 2011 02:54    Post subject: Reply with quote

torygmile wrote:
Строки целиком изменять нельзя, изменить нужно лишь определенные границами группы.
Что значит "нельзя"? Это всего лишь вопрос реализации. Символы в серёдке поменяются или строки целиком - не имеет никакого значения, результат будет один.
Back to top
View user's profile Send private message
torygmile



Joined: 18 Aug 2011
Posts: 10
Location: Россия

Post (Separately) Posted: Thu Aug 18, 2011 02:57    Post subject: Reply with quote

Понятно что строка изменится, я имел ввиду что символы за границами групп должны остаться как есть...
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Aug 18, 2011 03:00    Post subject: Reply with quote

Строка меняется на строку целиком, а не выборочно по символам, это и так понятно.
Back to top
View user's profile Send private message
torygmile



Joined: 18 Aug 2011
Posts: 10
Location: Россия

Post (Separately) Posted: Thu Aug 18, 2011 03:06    Post subject: Reply with quote

Вот скажем строка из документа где нужно поменять группы
<a title="The Guardian weekly 2011.05.27" target = "_blank" href="http..hwt73qiyv8ei/The_Guardian_weekly_2011.05.27.pdf.html"><img style="border:none;" src="/button.png" title="The Guardian weekly 2011.05.27" alt="Download Newspapers The Guardian weekly 2011.05.27 " /></a><br /
Это группа
http..hwt73qiyv8ei/The_Guardian_weekly_2011.05.27.pdf
http..- неизменямое начало группы. The_Guardian_weekly_2011.05.27.pdf конец который должен совпасть с соответствующей группой в другом файле. И группа должна замениться с другого файла такой
http..de4576556788ei/The_Guardian_weekly_2011.05.27.pdf
Т.е. строка станет такой
<a title="The Guardian weekly 2011.05.27" target = "_blank" href="http..de4576556788ei/The_Guardian_weekly_2011.05.27.pdf.html"><img style="border:none;" src="/button.png" title="The Guardian weekly 2011.05.27" alt="Download Newspapers The Guardian weekly 2011.05.27 " /></a><br /
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Aug 18, 2011 03:36    Post subject: Reply with quote

О, нет, тогда первый пример был совершенно не в кассу. Мало того, что в первой неизменяетмой части нет символа "/", так ещё и во второй этих символов 5, а не 1.
Имеем следующее:
Quote:
Начало: <a title="The Guardian weekly 2011.05.27" target = "_blank" href="http..
Заменяемая часть
Конец: /The_Guardian_weekly_2011.05.27.pdf.html"><img style="border:none;" src="/button.png" title="The Guardian weekly 2011.05.27" alt="Download Newspapers The Guardian weekly 2011.05.27 " /></a><br /

Теперь нужно понять - где в начале неповторяемая константа?
В конце, как я понял, это символ "/", идущий следом после заменяемой части.

Можно, конечно, брать неизменяемые куски целиком и прописывать их в параметрах кнопки, но там юзеру надо заведомо понимать, как правильно выставлять кавычки.
Back to top
View user's profile Send private message
torygmile



Joined: 18 Aug 2011
Posts: 10
Location: Россия

Post (Separately) Posted: Thu Aug 18, 2011 04:24    Post subject: Reply with quote

Это я привел как пример, просто если бы не убрал получилась гиперссылка.
Заменяемая часть лежит между символами //, вот так /hwt73qiyv8ei/.
Во второй части нет 5 символов, так как нам нужно ограничить изменения неизменяемой второй частью - The_Guardian_weekly_2011.05.27.pdf в предыдущем примере.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Aug 18, 2011 04:49    Post subject: Reply with quote

torygmile wrote:
если бы не убрал получилась гиперссылка.
Не убрал что? Символ "/"? Т.е. имеем
Quote:
<a title="The Guardian weekly 2011.05.27" target = "_blank" href="http://ссылка/
И получается, что символ "/" в неизменяемой части не один, а несколько, в зависимости от вложенности. Короче, тут, похоже, придётся как минимум первую часть целиком прописывать, п.ч. неизменяемой константы в ней нет, ну, разве что "http://".
torygmile wrote:
Во второй части нет 5 символов, так как нам нужно...
Уже нелогично. То, что - нужно, не означает, что - нет. Они есть и я их подсчитал. Заменяться в любом случае будет вся строка, а не набор символов (который раз уже пишу). Хотя это уже не важно.
Back to top
View user's profile Send private message
torygmile



Joined: 18 Aug 2011
Posts: 10
Location: Россия

Post (Separately) Posted: Thu Aug 18, 2011 05:10    Post subject: Reply with quote

Задача решена, помогли с алгоритмом на Mathematica, спасибо большое за участие Very Happy
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group