AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

поиск и замена
Goto page Previous  1, 2, 3 ... 17, 18, 19, 20  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
YuS



Joined: 15 Sep 2013
Posts: 188

PostPosted: Wed May 20, 2015 12:25 pm    Post subject: Re: Вопрос по функционалу: копирование и вставка в нужные по Reply with quote

ezjikfrom wrote:

Подскажите, пожалуйста, как это сделать в AkelPade

Для начала, дайте пример файла.
Back to top
View user's profile Send private message
ezjikfrom



Joined: 20 May 2015
Posts: 6

PostPosted: Wed May 20, 2015 12:36 pm    Post subject: Reply with quote

Вот пример xml. Два товара для примера (там их тысячи). Нужно скопировать ссылку из url в descripshion, добавить к существующей там информации

</offer>
<offer id="2414889" available="true">
<url>http://store.ru/664482</url>
<price>1157</price>
<currencyId>RUB</currencyId>
<categoryId>296</categoryId>
<categoryId>303</categoryId>
<picture>http://babadu.ru/upload/iblock/654/48.jpg</picture>
<name>Ночник Овечка англоязычная VTech</name>
<vendor>VTech</vendor>
<vendorCode>80-074003</vendorCode>
<description><Ночник Овечка англоязычная VTech станет отличным приобретением для вашего крохи.></description>

</offer>
<offer id="2414890" available="true">
<url>http://store.ru/557</url>
<price>1936</price>
<currencyId>RUB</currencyId>
<categoryId>1469</categoryId>
<categoryId>1486</categoryId>
<categoryId>1491</categoryId>
<picture>http://babadu.ru/upload/iblock/2c3/1.jpg</picture>
<name>Обучающая сказка Золушка VTech </name>
<vendor>VTech</vendor>
<vendorCode>80-062056</vendorCode>
<description><Обучающая сказка Золушка VTech - это удивительная книга, в которой так много всего интересного и полезного для малыша.></description>
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 188

PostPosted: Wed May 20, 2015 5:04 pm    Post subject: Reply with quote

ezjikfrom wrote:
Вот пример xml. Два товара для примера (там их тысячи). Нужно скопировать ссылку из url в descripshion, добавить к существующей там информации

По аналогии отсюда (спасибо KDJ):
Скрипт SearchReplace.js
+ Регулярные выражения
+ Заменять на функцию
Code:
Что: (<offer[^>]*>[\s\S]*?<url>)([\s\S]*?)(</url>[\s\S]*?<description>([\s\S]*?)<\/description>[\s\S]*?</offer>)
Чем: return $1 + $2 + ($3).replace(/<description>[\s\S]*?<\/description>/g, "<description>" + " " + $2 + " " + $4 + "<\/description>");
Back to top
View user's profile Send private message
ezjikfrom



Joined: 20 May 2015
Posts: 6

PostPosted: Thu May 21, 2015 8:02 am    Post subject: Reply with quote

Работает! Большое вам спасибо!
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 901
Location: Kyiv, Ukraine

PostPosted: Thu May 21, 2015 2:10 pm    Post subject: Reply with quote

В использовании [\s\S]*? вместо .*? есть какой-то нюанс?
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 188

PostPosted: Thu May 21, 2015 3:41 pm    Post subject: Reply with quote

DV wrote:
В использовании [\s\S]*? вместо .*? есть какой-то нюанс?

Угу, правила регэкспов в SearchReplace отличаются от правил самого AP, в данном случае .*? не захватит \n, т.е. совпадения не будет найдено.
Back to top
View user's profile Send private message
mihanus_sa



Joined: 24 Feb 2012
Posts: 18

PostPosted: Tue May 26, 2015 12:43 am    Post subject: поиск дубликатов Reply with quote

Уже перепробовал весь существующий софт по поиску дубликатов, поэтому вся надежда на Вашу помощь.
Имеется документ на 60000 строк.
пример содержания документа
Code:
^(?i) * Спишь?{0,5}$

Ага! А ответил тебе тогда кто??
Да. Сплю. Во сне печатаю.

^(?i) *Ты (.{1,9})(!{0,})$

Сам $1!
Сам ты $1

^(?i)(.*)((Ч|ш|ф|х)(то|е) (такое|за) )(.{0,15})(!{0,})$

ммм... $6... - это такая штука...
ммм... $6... Ну это...
Сам  не знаю.

^(?i) * Спишь?{0,5}$

Да
Нет
Не очень.
Еще бы.


В документе есть пробелы, которые удалять нельзя. А есть не полные дубликаты, т.е. вопрос
Code:
^(?i) * Спишь?{0,5}$
может повторяться, а ответы будут разные.
Автоматическое удаление дубликатов не пойдёт.
Необходимо найти и подсветить дубликаты(по вопросу или по ответу не важно) в тексте, чтобы можно было их грамотно объединить. Пробовал Format::LineGetDuplicates, Coder::HighLight и FileInfo.js, но необходимого результата не принесло. Вообще возможно ли это? Sad Заранее благодарен.
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 188

PostPosted: Tue May 26, 2015 7:06 am    Post subject: Re: поиск дубликатов Reply with quote

mihanus_sa wrote:
Вообще возможно ли это? Sad Заранее благодарен.

Дубликаты посреди текста найти-то можно, но что с ними делать дальше? Ваша задача либо неполностью описана, либо придется всё разбирать вручную...
Могу предложить построчный поиск дубликатов (т.е. будут искаться дубликаты строк, а не отдельные слова) с дальнейшей вставкой какой-либо метки, но от ручного разбора, всё равно не избавиться.
FindReplaceEx.js

Code:
Что: (^[^\n]*(?<!=====================)$)(\n.*?)\1$
Чем: \1\2\1=====================


В итоге у дубликата строки добавляются символы "===...", а единственный "оригинал" строки остается без маркировки.
Поиск/Замену производить в несколько проходов. Можно кнопкой "Заменить всё", но также в несколько проходов до тех пор, пока не будет "Количество замен: 0".
В общем, где-то так получается:
Исходный файл
Code:
^(?i) * Спишь?{0,5}$

Ага! А ответил тебе тогда кто??
Да. Сплю. Во сне печатаю.

^(?i) *Ты (.{1,9})(!{0,})$

Сам $1!
Сам ты $1

^(?i)(.*)((Ч|ш|ф|х)(то|е) (такое|за) )(.{0,15})(!{0,})$

ммм... $6... - это такая штука...
ммм... $6... Ну это...
Сам  не знаю.

^(?i) * Спишь?{0,5}$

Да
Нет
Не очень.
Еще бы.

^(?i) * Спишь?{0,5}$
eue

^(?i) * Спишь?{0,5}$
угу
ага
Да
нет

^(?i) * Спишь?{0,5}$
конечно
НЕТ
нет
да



Результат
Code:
^(?i) * Спишь?{0,5}$

Ага! А ответил тебе тогда кто??
Да. Сплю. Во сне печатаю.

^(?i) *Ты (.{1,9})(!{0,})$

Сам $1!
Сам ты $1

^(?i)(.*)((Ч|ш|ф|х)(то|е) (такое|за) )(.{0,15})(!{0,})$

ммм... $6... - это такая штука...
ммм... $6... Ну это...
Сам  не знаю.

^(?i) * Спишь?{0,5}$=====================

Да
Нет
Не очень.
Еще бы.

^(?i) * Спишь?{0,5}$=====================
eue

^(?i) * Спишь?{0,5}$=====================
угу
ага
Да=====================
нет

^(?i) * Спишь?{0,5}$=====================
конечно
НЕТ
нет=====================
да

Back to top
View user's profile Send private message
mihanus_sa



Joined: 24 Feb 2012
Posts: 18

PostPosted: Tue May 26, 2015 10:15 am    Post subject: Re: поиск дубликатов Reply with quote

YuS wrote:
Дубликаты посреди текста найти-то можно, но что с ними делать дальше?

дальше если встречается два одинаковых запроса например
Code:
^(?i)(.*)((Ч|ш|ф|х)(то|е) (такое|за) )(.{0,15})(!{0,})$
с разными вариантами, то второй запрос удаляется, а различающиеся варианты добавляются к первому. Вручную тоже сойдёт, ведь их можно будет найти по ===================== и почистить

YuS wrote:

Могу предложить построчный поиск дубликатов (т.е. будут искаться дубликаты строк, а не отдельные слова) с дальнейшей вставкой какой-либо метки, но от ручного разбора, всё равно не избавиться.
FindReplaceEx.js
Code:
Что: (^[^\n]*(?<!=====================)$)(\n.*?)\1$
Чем: \1\2\1=====================

В итоге у дубликата строки добавляются символы "===...", а единственный "оригинал" строки остается без маркировки.
Поиск/Замену производить в несколько проходов. Можно кнопкой "Заменить всё", но также в несколько проходов до тех пор, пока не будет "Количество замен: 0".

найдёт ли он запрос аналогичный этому
Code:
^(?i)(.*)(((\=)|(\%)\))|(\)\))|O\:\-\)|O\:\)|O\+\)||O\=\)|\;\D).{0,}$

или этому?
Code:
^(?i)(.*)(Пр(и|е|ю).{0,5}(вет|т|в|д|ф|тик|ветствую ).{0,8}|х(а|о|е)й |re|ку|(ку-ку)|hello|q|hi|hey|здоро(в|ф|а(лл|л)оха|холла|хе(лл|л)(оу|о)|\*HI\*).{0,}).{0,}$
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 188

PostPosted: Tue May 26, 2015 11:57 am    Post subject: Re: поиск дубликатов Reply with quote

mihanus_sa wrote:

найдёт ли он запрос аналогичный этому
...
или этому?
...

Вы предлагаете это мне проверять? Smile
Пробуйте, тестируйте, проверяйте - могу только подсказать или проверить, если что-то совсем не получается... мне-то это точно не нужно.
Back to top
View user's profile Send private message
mihanus_sa



Joined: 24 Feb 2012
Posts: 18

PostPosted: Tue May 26, 2015 1:23 pm    Post subject: Re: поиск дубликатов Reply with quote

YuS wrote:
Вы предлагаете это мне проверять? Smile
Пробуйте, тестируйте, проверяйте - могу только подсказать или проверить, если что-то совсем не получается... мне-то это точно не нужно.

нет, но идея с пометкой отличная, вот только после долгого выполнения Количество Замен: 0
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 188

PostPosted: Tue May 26, 2015 2:58 pm    Post subject: Re: поиск дубликатов Reply with quote

mihanus_sa wrote:
вот только после долгого выполнения Количество Замен: 0

Ну, с этим ничего не сделать, т.к. регулярка с многостроковым захватом любых символов, не позволит алгоритму автоматически возвращаться к началу, для проверки того, что было захвачено... даже при условии наличия опции "по кругу".
Но есть выход, можно воспользоваться пакетами, т.е. один шаблон несколько раз добавить в пакет и затем запустить этот пакет. В общем, количество строк в пакете и количество запусков пакета можно варьировать, т.е. опытным путем подобрать оптимальное сочетание...
Back to top
View user's profile Send private message
mihanus_sa



Joined: 24 Feb 2012
Posts: 18

PostPosted: Tue May 26, 2015 10:19 pm    Post subject: Re: поиск дубликатов Reply with quote

YuS wrote:
можно воспользоваться пакетами, т.е. один шаблон несколько раз добавить в пакет и затем запустить этот пакет. В общем, количество строк в пакете и количество запусков пакета можно варьировать, т.е. опытным путем подобрать оптимальное сочетание...
а нельзя просто маску поиска более универсальной?
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 188

PostPosted: Wed May 27, 2015 2:15 am    Post subject: Re: поиск дубликатов Reply with quote

mihanus_sa wrote:
а нельзя просто маску поиска более универсальной?

Нет, не получится. Такова логика работы регэкспов.
Back to top
View user's profile Send private message
mihanus_sa



Joined: 24 Feb 2012
Posts: 18

PostPosted: Wed May 27, 2015 10:20 am    Post subject: Re: поиск дубликатов Reply with quote

YuS wrote:
есть выход, можно воспользоваться пакетами, т.е. один шаблон несколько раз добавить в пакет и затем запустить этот пакет. В общем, количество строк в пакете и количество запусков пакета можно варьировать, т.е. опытным путем подобрать оптимальное сочетание...

расскажите, пожалуйста, по подробнее что и как сделать
а то я, честно говоря, впервые про добавление пакетов слышу
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page Previous  1, 2, 3 ... 17, 18, 19, 20  Next
Page 18 of 20

 
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


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group