Спасибо.YuS wrote:[v] Регулярные выраженияzeroberto wrote: как выполнить автозамену
<div><img alt="" data-rich-file-id="цифра" src="
на
'](./images/smilies/icon_smile.gif)
Спасибо.YuS wrote:[v] Регулярные выраженияzeroberto wrote: как выполнить автозамену
<div><img alt="" data-rich-file-id="цифра" src="
на
';
Code: Select all
AkelPad.TextReplace(0, "FindIt1", "ReplaceWith1", 0x200001 /*FRF_DOWN|FRF_BEGINNING*/, 0x1);
AkelPad.TextReplace(0, "FindIt2", "ReplaceWith2", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, 0x1);
Спасибо за объяснение.opk44 wrote:Azrailll
1. В подавляющем большинстве случаев ничего менять не надо.
2. Поиск в скрипте выполняется стандартным Akelpad-методом - "AkelPad.TextReplace":3. Описание метода найдёте в файле "..\AkelFiles\Docs\Scripts-Rus.txt"Code: Select all
AkelPad.TextReplace(0, "FindIt1", "ReplaceWith1", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, true);
4. В тех же случаях, где необходимо исключить обработку шаблона как регулярного выражения и принудить к обработке как "обычного текста", пересчитайте сумму флагов за минусом FRF_REGEXP (0x00080000 //FRF_REGEXP): 0x280001 --> 0x200001
5. Также желательно заменить в оригинальном скрипте последний аргумент в соответствии с актуальным синтаксисом: true --> 0x1
6. ИТОГО (1 - "обычный", 2 - RegExp):Code: Select all
AkelPad.TextReplace(0, "FindIt1", "ReplaceWith1", 0x200001 /*FRF_DOWN|FRF_BEGINNING*/, 0x1); AkelPad.TextReplace(0, "FindIt2", "ReplaceWith2", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, 0x1);
Из-за ограничений, накладываемых JScript на символ "". Его, в данном случае, нужно экранировать (дублировать). Т. е. запись вашего выражения внутри скрипта должна выглядеть следующим образом:Azrailll wrote:И еще вопрос: почему такое регулярное выражение "<p>(\n| )</p>\n" в скрипте не находит? (обычным поиском все нормально)
Code: Select all
AkelPad.TextReplace(0, "<p>(\\n| )</p>\\n", "ReplaceWith3", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, 0x1);
Code: Select all
// sSelText = sSelText.replace(/[\]\[\{\}\(\)\*\+\?\.\^\$\|\=\<\>\#\\]/g, escaper);
sSelText = sSelText.replace(/[\\]/g, escaper); // экранировать
function escaper(str) {
return '\\' + str;
}
// или так наверно
sSelText = sSelText.replace("\\", "\\\\");
Code: Select all
<item sku="2083669083193">
<name>Electrolux EACS-07HF/N3 Fusion Нет на складе!!! нет в наличии</name>
<quantity>4</quantity>
<price>16888</price>
<cat_id>536820868</cat_id>
</item>
<item sku="2210000011137">
<name>Electrolux EACS-07HG-M/N3 Silver Белое стекло</name>
<quantity>2</quantity>
<price>14999</price>
<cat_id>536820868</cat_id>
</item>
<item sku="2210000011878">
<name>Electrolux EACS-07HLO/HF нет в наличии</name>
<quantity>2</quantity>
<price>11999</price>
<cat_id>536820868</cat_id>
Если версия редактора не совсем древняя, то можно и без инструментов.wizpad wrote:...найти ключевое словосочетание, потом перейти на следующую строку и заменить ее на свой текст.
А именно - ищем "нет на складе", и заменяем следующую строку (+1) на свой текст... : <quantity>0</quantity>
Как это реализовать быстро и с помощью каких инструментов?
Code: Select all
(?-s)(^.*Нет на складе.*)(\n.*<quantity>)(\d+)(<\/quantity>)
Code: Select all
\1\2\u0030\4
Code: Select all
(?i-s)(нет на складе)(.*\n)(.*)
Code: Select all
\1\2 <quantity>0</quantity>
Благодарю! Оба варианты работают. На старой версии выдало ошибку, на свежей работает.opk44 wrote: Если версия редактора не совсем древняя, то можно и без инструментов.
Стандартный диалог замены
Смотрел. Для человека далекого от кодинга - тяжко осилить. Предполагал, что есть решение типа:opk44 wrote:wizpad
1. Для того, чтобы узнать "возможно ли", крайне полезно ознакомиться с документацией (раздел "Параметры командной строки"+"Ручные установки").
Искал. Искомое решение отсутствует. Возможно, мне так повезло с запросом "из командной строки поиск и замена", но на вторую страницу результата поиска уже выдает ошибку http://akelpad.sourceforge.net/forum/se ... 1&start=152. На форуме работает поиск!
Видел. Смотрел. К сожалению, применение к свое задаче не нашел. Где-то рядом, но развить самому не получилось3. На текущей (27-й) странице данной ветки только что в очередной раз обсуждался скрипт "MultiReplace.js". Затруднительно понять, каким образом вы этого не заметили.
1. "Лепить" bat-файлы - это тоже разновидность кодинга, а сложность - понятие относительное. Но дело не в этом. Как говорилось в известном мультфильме "лучше день потерять, потом за пять минут долететь...Вперёд!".wizpad wrote:Смотрел. Для человека далекого от кодинга - тяжко осилить. Предполагал, что есть решение типа:
фаил.txt фаил сценария поиска и замены, сохранение.
Вероятно, тут сложнее чем bat фаил слепить
Code: Select all
AkelPad.exe /Show(0) "c:\File_In.txt" /Call("Scripts::Main", 2, "MultiReplace.js") /SaveFile("C:\File_Out.txt") /Quit
Code: Select all
/Show(0)
Code: Select all
"c:\File_In.txt"
Code: Select all
/Call("Scripts::Main", 2, "MultiReplace.js")
Code: Select all
/SaveFile("C:\File_Out.txt")
Code: Select all
/Quit