View previous topic :: View next topic |
Author |
Message |
torygmile
Joined: 18 Aug 2011 Posts: 10 Location: Россия
|
(Separately) Posted: Thu Aug 18, 2011 01:40 Post subject: Сложный поиск с заменой |
|
|
Здравствуйте.
Возможно ли в ТС сделать поиск с заменой, чтобы при помощи регулярных выражений найти группу символов по типу 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 |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Aug 18, 2011 01:53 Post subject: |
|
|
Если есть точное соответствие начала и конца строк, то можно легко и без регекспов обойтись. А под точным соответствием в данном случае можно понимать наличие в каждой строке двух обрамляющих символов, например, "/" вместе с близлежащими символами.
Вопросы:
1) А есть такие строки, где окончания совпадают, а префиксы - нет?
2) Почему речь идёт о началах и концах групп, а не строк? Примеры этот момент не проясняют.
Last edited by Flasher on Thu Aug 18, 2011 02:35; edited 1 time in total |
|
Back to top |
|
 |
torygmile
Joined: 18 Aug 2011 Posts: 10 Location: Россия
|
(Separately) Posted: Thu Aug 18, 2011 02:33 Post subject: |
|
|
Нет, есть подгруппа из 6 символов которая одинакова вначале всех групп, и начало маски будет по ней. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Aug 18, 2011 02:38 Post subject: |
|
|
Если нет, то достаточно находить строки с одинаковым окончанием и заменять в исправляемом файле строку на строку из другого файла. Или есть какой-то подвох? |
|
Back to top |
|
 |
torygmile
Joined: 18 Aug 2011 Posts: 10 Location: Россия
|
(Separately) Posted: Thu Aug 18, 2011 02:42 Post subject: |
|
|
Все верно, но заменять не строку а группу символов по маске (с одинаковым началом и концом).
Т.е. несколько тысяч групп символов с одного файла должны заменить соответствующие по маске в другом.
И конец у каждой группы символов различен, совпадает только с группой в другом файле. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Aug 18, 2011 02:45 Post subject: |
|
|
Я не понимаю, зачем заменять группу символов, а не строк целиком, если строки в начале и в конце совпадают?
И зачем одинаковое начала проверять, если только что было подтверждено, что строк с одинаковым окончанием, но с разным концом нет? |
|
Back to top |
|
 |
torygmile
Joined: 18 Aug 2011 Posts: 10 Location: Россия
|
(Separately) Posted: Thu Aug 18, 2011 02:49 Post subject: |
|
|
Нет, я с самого начала писал что есть одинаковая подгруппа символов в начале каждой группы, но группа не обязательно начинается с начала строки.
Строки целиком изменять нельзя, изменить нужно лишь определенные границами группы.
И эти группы с совпадающим концом будут на разных строках в первом и втором файлах. Группа символов 2-й строки 1-го файла будет совпадать с группой 1037 строки 2-го к примеру  |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Aug 18, 2011 02:54 Post subject: |
|
|
torygmile wrote: | Строки целиком изменять нельзя, изменить нужно лишь определенные границами группы. | Что значит "нельзя"? Это всего лишь вопрос реализации. Символы в серёдке поменяются или строки целиком - не имеет никакого значения, результат будет один. |
|
Back to top |
|
 |
torygmile
Joined: 18 Aug 2011 Posts: 10 Location: Россия
|
(Separately) Posted: Thu Aug 18, 2011 02:57 Post subject: |
|
|
Понятно что строка изменится, я имел ввиду что символы за границами групп должны остаться как есть... |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Aug 18, 2011 03:00 Post subject: |
|
|
Строка меняется на строку целиком, а не выборочно по символам, это и так понятно. |
|
Back to top |
|
 |
torygmile
Joined: 18 Aug 2011 Posts: 10 Location: Россия
|
(Separately) Posted: Thu Aug 18, 2011 03:06 Post subject: |
|
|
Вот скажем строка из документа где нужно поменять группы
<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 |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Aug 18, 2011 03:36 Post subject: |
|
|
О, нет, тогда первый пример был совершенно не в кассу. Мало того, что в первой неизменяетмой части нет символа "/", так ещё и во второй этих символов 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 |
|
 |
torygmile
Joined: 18 Aug 2011 Posts: 10 Location: Россия
|
(Separately) Posted: Thu Aug 18, 2011 04:24 Post subject: |
|
|
Это я привел как пример, просто если бы не убрал получилась гиперссылка.
Заменяемая часть лежит между символами //, вот так /hwt73qiyv8ei/.
Во второй части нет 5 символов, так как нам нужно ограничить изменения неизменяемой второй частью - The_Guardian_weekly_2011.05.27.pdf в предыдущем примере. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Aug 18, 2011 04:49 Post subject: |
|
|
torygmile wrote: | если бы не убрал получилась гиперссылка. | Не убрал что? Символ "/"? Т.е. имеем Quote: | <a title="The Guardian weekly 2011.05.27" target = "_blank" href="http://ссылка/ | И получается, что символ "/" в неизменяемой части не один, а несколько, в зависимости от вложенности. Короче, тут, похоже, придётся как минимум первую часть целиком прописывать, п.ч. неизменяемой константы в ней нет, ну, разве что "http://".
torygmile wrote: | Во второй части нет 5 символов, так как нам нужно... | Уже нелогично. То, что - нужно, не означает, что - нет. Они есть и я их подсчитал. Заменяться в любом случае будет вся строка, а не набор символов (который раз уже пишу). Хотя это уже не важно. |
|
Back to top |
|
 |
torygmile
Joined: 18 Aug 2011 Posts: 10 Location: Россия
|
(Separately) Posted: Thu Aug 18, 2011 05:10 Post subject: |
|
|
Задача решена, помогли с алгоритмом на Mathematica, спасибо большое за участие  |
|
Back to top |
|
 |
|