поиск и замена

Russian main discussion
  • Author
  • Message
YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Re: поиск дубликатов

Post by YuS »

mihanus_sa wrote: расскажите, пожалуйста, по подробнее что и как сделать
а то я, честно говоря, впервые про добавление пакетов слышу
Не мастер я хелпы писать.
Установите скрипт, который вот здесь я упоминал и попробуйте по кнопкам понажимать, там всё достаточно очевидно.

Offline
Posts: 18
Joined: Fri Feb 24, 2012 1:12 pm

Post by mihanus_sa »

Имеется документ на 60000 строк.

Code: Select all

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

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

^(?i)(.*)(Пр(и|е|ю).{0,5}(вет|т|в|д|ф|тик|ветствую ).{0,8}|х(а|о|е)й |re|ку|(ку-ку)|hello|q|hi|hey|здоро(в|ф|а(лл|л)оха|холла|хе(лл|л)(оу|о)|\*HI\*).{0,}).{0,}$

Здорова
Привет привет

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

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

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

Да
Нет
Не очень

^(?i)(.*)(Пр(и|е|ю).{0,5}(вет|т|в|д|ф|тик|ветствую ).{0,8}|х(а|о|е)й |re|ку|(ку-ку)|hello|q|hi|hey|здоро(в|ф|а(лл|л)оха|холла|хе(лл|л)(оу|о)|\*HI\*).{0,}).{0,}$

Я слушаю
И тебе не болеть

Все запросы начинаются на ^(?i), некоторые на ^(?i)(.*). В документе есть пробелы, которые удалять нельзя. Автоматическое удаление дубликатов не пойдёт, т.к. необходимо найти и подсветить дубликаты(по запросу или по ответам на запрос не важно) в тексте, чтобы можно было их грамотно объединить. Пробовал Format::LineGetDuplicates, Coder::HighLight и FileInfo.js, но необходимого результата не принесло. Поступило предложение попробовать
Image

Code: Select all

Что: (^[^\n]*(?<!=====================)$)(\n.*?)\1$ 
Чем: \1\2\1=====================
чтобы получить

Code: Select all

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

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

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

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

^(?i) * Спишь?{0,5}$===================== 
конечно 
НЕТ 
нет===================== 
да 
но Количество Замен: 0 и он даже не ищет. Подскажите в каком направлении копать. Заранее благодарен.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

mihanus_sa wrote:но Количество Замен: 0 и он даже не ищет.
Хмм, так у Вас получается, что не работает совсем регулярка...
Тогда надо начать с версии AP, как минимум, ибо в разных версиях поведение работы регэкспов менялось.

Offline
Posts: 18
Joined: Fri Feb 24, 2012 1:12 pm

Post by mihanus_sa »

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

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

mihanus_sa wrote:ставить 100500 версий? или есть какой то чейнджлог по которому это определить можно?
Зачем ставить все версии? Взять самую свежую и попробовать. Есть и чейнджлог \AkelFiles\Docs\AkelHistory-Rus.txt, и апдейтер тоже есть, с помощью которого можно всегда актуализировать версию AP и скриптов.

Добавлено:
А ещё при копировании строк из форума, надо не забывать удалять зловредный пробел, который добавляется в конце строк... часто это становится причиной неработоспособности регэкспов.

Offline
Posts: 18
Joined: Fri Feb 24, 2012 1:12 pm

Post by mihanus_sa »

YuS wrote: А ещё при копировании строк из форума, надо не забывать удалять зловредный пробел, который добавляется в конце строк... часто это становится причиной неработоспособности регэкспов.
да, пошёл процесс, вот только появилось несколько вопросов:
1. У Вас на скриншоте и в коде отличаются что чем заменять. В чем разница?
2. Для чего используется ?<! в строке (^[^\n]*(?<!=====================)$)(\n.*?)\1$
заранее благодарю

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

mihanus_sa wrote: 1. У Вас на скриншоте и в коде отличаются что чем заменять. В чем разница?
Всё просто: скриншот я сделал во время проверки регэкспа, но для правильной замены использовать нужно то, что приведено текстом. В общем, если не будет того, что в текстовом варианте, то дубликаты будут маркироваться бесконечно, шаблон с каждым новым проходом просто будет добавлять все больше и больше в строку "символов маркировки".
mihanus_sa wrote: 2. Для чего используется ?<!
Это отрицательный lookbehind, иначе то, чего в тексте перед последующим символом быть не должно.

Offline
Posts: 2
Joined: Sat May 30, 2015 6:14 pm

Post by Drimtim »

Пожалуйста подскажите, как искать:
боль|боли

Чтобы исключить из результатов больн|больш|болиг

То есть надо находить слова, похожие на боль, обезболивание, боли, чтобы в результатах поиска не было слов, похожих на больной, большой, болиголов.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Drimtim
Что: бол[ьи][^ншг]

[v] Регулярные выражения

Offline
Posts: 18
Joined: Fri Feb 24, 2012 1:12 pm

Post by mihanus_sa »

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

Offline
Posts: 2
Joined: Sat May 30, 2015 6:14 pm

Post by Drimtim »

Спасибо

Offline
Posts: 6
Joined: Wed May 20, 2015 9:36 am

Поиск и замена, прошу подсказать.

Post by ezjikfrom »

Добрый день. Помогите подправить функцию. Нужно текст из url перенести в начало description

Ранее уже мне дали решение по замене:
"По аналогии отсюда (спасибо KDJ):
Скрипт SearchReplace.js
+ Регулярные выражения
+ Заменять на функцию
Код:
Что: (<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>");
"

Но теперь у меня xml, где url и description поменялись местами, скрипт берет адрес из url и переносит в description следующей строки, а надо этой же. Самому знаний не хватило, чтобы поправить. Пример кода:

<offers><offer available="true" type="vendor.model" id="LM"><categoryId>7</categoryId><country_of_origin>...</country_of_origin><currencyId>RUR</currencyId><delivery>true</delivery><description>Артикул </description><local_delivery_cost>290</local_delivery_cost><manufacturer_warranty>true</manufacturer_warranty><market_category>Дом и дача/Освещение</market_category><model>Бра-1</model><picture>http://photo</picture><price>970</price><vendor>Lumier</vendor><vendorCode>LM-1</vendorCode><url>https</url><modified_time>1</modified_time><name>Бра-1</name></offer>

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Re: Поиск и замена, прошу подсказать.

Post by YuS »

ezjikfrom wrote:Помогите подправить функцию.
...
скрипт берет адрес из url и переносит в description следующей строки, а надо этой же.
Для этого не надо было новую тему создавать, а в той же теме продолжить...
Все условия такие же, как и в предыдущем шаблоне, меняем только это:

Code: Select all

Что: (<offer [^>]*>[\s\S]*?)(<description>(?! ?http)([\s\S]*?)</description>)([\s\S]*?<url>([\s\S]*?)</url>[\s\S]*?</offer>)
Чем: return $1 + ($2).replace(/<description>[\s\S]*?<\/description>/g, "<description>" + " " + $5 + " " + $3 + "<\/description>") + $4;

Offline
Posts: 6
Joined: Wed May 20, 2015 9:36 am

Post by ezjikfrom »

Сработало. Спасибо огромное Вам за помощь!)
P.S. прошлая тема была закрыта и доступа к ней нет. Пришлось новую создать.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Тема была закрыта потому, что есть аналогичная по смыслу и в неё как раз был перемещен Ваш вопрос. Эта тема вполне доступна...
Post Reply