</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>
Posted: Wed May 20, 2015 5:04 pm
by YuS
ezjikfrom wrote:Вот пример xml. Два товара для примера (там их тысячи). Нужно скопировать ссылку из url в descripshion, добавить к существующей там информации
По аналогии отсюда (спасибо KDJ):
Скрипт SearchReplace.js
+ Регулярные выражения
+ Заменять на функцию
В использовании [\s\S]*? вместо .*? есть какой-то нюанс?
Posted: Thu May 21, 2015 3:41 pm
by YuS
DV wrote:В использовании [\s\S]*? вместо .*? есть какой-то нюанс?
Угу, правила регэкспов в SearchReplace отличаются от правил самого AP, в данном случае .*? не захватит \n, т.е. совпадения не будет найдено.
поиск дубликатов
Posted: Tue May 26, 2015 12:43 am
by mihanus_sa
Уже перепробовал весь существующий софт по поиску дубликатов, поэтому вся надежда на Вашу помощь.
Имеется документ на 60000 строк.
пример содержания документа
^(?i) * Спишь?{0,5}$
Ага! А ответил тебе тогда кто??
Да. Сплю. Во сне печатаю.
^(?i) *Ты (.{1,9})(!{0,})$
Сам $1!
Сам ты $1
^(?i)(.*)((Ч|ш|ф|х)(то|е) (такое|за) )(.{0,15})(!{0,})$
ммм... $6... - это такая штука...
ммм... $6... Ну это...
Сам не знаю.
^(?i) * Спишь?{0,5}$
Да
Нет
Не очень.
Еще бы.
В документе есть пробелы, которые удалять нельзя. А есть не полные дубликаты, т.е. вопрос
может повторяться, а ответы будут разные.
Автоматическое удаление дубликатов не пойдёт.
Необходимо найти и подсветить дубликаты(по вопросу или по ответу не важно) в тексте, чтобы можно было их грамотно объединить. Пробовал Format::LineGetDuplicates, Coder::HighLight и FileInfo.js, но необходимого результата не принесло. Вообще возможно ли это? Заранее благодарен.
Re: поиск дубликатов
Posted: Tue May 26, 2015 7:06 am
by YuS
mihanus_sa wrote:Вообще возможно ли это? Заранее благодарен.
Дубликаты посреди текста найти-то можно, но что с ними делать дальше? Ваша задача либо неполностью описана, либо придется всё разбирать вручную...
Могу предложить построчный поиск дубликатов (т.е. будут искаться дубликаты строк, а не отдельные слова) с дальнейшей вставкой какой-либо метки, но от ручного разбора, всё равно не избавиться. FindReplaceEx.js
В итоге у дубликата строки добавляются символы "===...", а единственный "оригинал" строки остается без маркировки.
Поиск/Замену производить в несколько проходов. Можно кнопкой "Заменить всё", но также в несколько проходов до тех пор, пока не будет "Количество замен: 0".
В общем, где-то так получается:
^(?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}$
конечно
НЕТ
нет
да
^(?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}$=====================
конечно
НЕТ
нет=====================
да
Re: поиск дубликатов
Posted: Tue May 26, 2015 10:15 am
by mihanus_sa
YuS wrote:Дубликаты посреди текста найти-то можно, но что с ними делать дальше?
дальше если встречается два одинаковых запроса например
с разными вариантами, то второй запрос удаляется, а различающиеся варианты добавляются к первому. Вручную тоже сойдёт, ведь их можно будет найти по ===================== и почистить
YuS wrote:
Могу предложить построчный поиск дубликатов (т.е. будут искаться дубликаты строк, а не отдельные слова) с дальнейшей вставкой какой-либо метки, но от ручного разбора, всё равно не избавиться. FindReplaceEx.js
В итоге у дубликата строки добавляются символы "===...", а единственный "оригинал" строки остается без маркировки.
Поиск/Замену производить в несколько проходов. Можно кнопкой "Заменить всё", но также в несколько проходов до тех пор, пока не будет "Количество замен: 0".
mihanus_sa wrote:
найдёт ли он запрос аналогичный этому
...
или этому?
...
Вы предлагаете это мне проверять?
Пробуйте, тестируйте, проверяйте - могу только подсказать или проверить, если что-то совсем не получается... мне-то это точно не нужно.
Re: поиск дубликатов
Posted: Tue May 26, 2015 1:23 pm
by mihanus_sa
YuS wrote:Вы предлагаете это мне проверять?
Пробуйте, тестируйте, проверяйте - могу только подсказать или проверить, если что-то совсем не получается... мне-то это точно не нужно.
нет, но идея с пометкой отличная, вот только после долгого выполнения Количество Замен: 0
Re: поиск дубликатов
Posted: Tue May 26, 2015 2:58 pm
by YuS
mihanus_sa wrote: вот только после долгого выполнения Количество Замен: 0
Ну, с этим ничего не сделать, т.к. регулярка с многостроковым захватом любых символов, не позволит алгоритму автоматически возвращаться к началу, для проверки того, что было захвачено... даже при условии наличия опции "по кругу".
Но есть выход, можно воспользоваться пакетами, т.е. один шаблон несколько раз добавить в пакет и затем запустить этот пакет. В общем, количество строк в пакете и количество запусков пакета можно варьировать, т.е. опытным путем подобрать оптимальное сочетание...
Re: поиск дубликатов
Posted: Tue May 26, 2015 10:19 pm
by mihanus_sa
YuS wrote:можно воспользоваться пакетами, т.е. один шаблон несколько раз добавить в пакет и затем запустить этот пакет. В общем, количество строк в пакете и количество запусков пакета можно варьировать, т.е. опытным путем подобрать оптимальное сочетание...
а нельзя просто маску поиска более универсальной?
Re: поиск дубликатов
Posted: Wed May 27, 2015 2:15 am
by YuS
mihanus_sa wrote:а нельзя просто маску поиска более универсальной?
Нет, не получится. Такова логика работы регэкспов.
Re: поиск дубликатов
Posted: Wed May 27, 2015 10:20 am
by mihanus_sa
YuS wrote:есть выход, можно воспользоваться пакетами, т.е. один шаблон несколько раз добавить в пакет и затем запустить этот пакет. В общем, количество строк в пакете и количество запусков пакета можно варьировать, т.е. опытным путем подобрать оптимальное сочетание...
расскажите, пожалуйста, по подробнее что и как сделать
а то я, честно говоря, впервые про добавление пакетов слышу