Спасибо.YuS wrote:[v] Регулярные выраженияzeroberto wrote: как выполнить автозамену
<div><img alt="" data-rich-file-id="цифра" src="
на
': 0x280001 --> 0x200001
5. Также желательно заменить в оригинальном скрипте последний аргумент в соответствии с актуальным синтаксисом: true --> 0x1
6. ИТОГО (1 - "обычный", 2 - RegExp):
1. В подавляющем большинстве случаев ничего менять не надо.
2. Поиск в скрипте выполняется стандартным Akelpad-методом - "AkelPad.TextReplace":
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);
-
Offline
- Posts: 4
- Joined: Fri Apr 20, 2018 2:54 am
Спасибо за объяснение.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);
И еще вопрос: почему такое регулярное выражение "<p>(\n| )</p>\n" в скрипте не находит? (обычным поиском все нормально)
-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
Из-за ограничений, накладываемых 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); -
Offline
- Posts: 351
- Joined: Mon Jun 03, 2019 2:33 am
Azrailll
перед применением экранировать
перед применением экранировать
Code: Select all
// sSelText = sSelText.replace(/[\]\[\{\}\(\)\*\+\?\.\^\$\|\=\<\>\#\\]/g, escaper);
sSelText = sSelText.replace(/[\\]/g, escaper); // экранировать
function escaper(str) {
return '\\' + str;
}
// или так наверно
sSelText = sSelText.replace("\\", "\\\\");-
Offline
- Posts: 4
- Joined: Thu Apr 09, 2020 8:52 am
Поиск - в одной строке, замена в следующей
Доброго дня! Прошу помощи новичку.
Есть текст, нужно найти ключевое словосочетание, потом перейти на следующую строку и заменить ее на свой текст.
А именно - ищем "нет на складе", и заменяем следующую строку (+1) на свой текст : <quantity>0</quantity>
Как это реализовать быстро и с помощью каких инструментов?[/code]
Есть текст, нужно найти ключевое словосочетание, потом перейти на следующую строку и заменить ее на свой текст.
А именно - ищем "нет на складе", и заменяем следующую строку (+1) на свой текст : <quantity>0</quantity>
Как это реализовать быстро и с помощью каких инструментов?
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>-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
Re: Поиск - в одной строке, замена в следующей
Если версия редактора не совсем древняя, то можно и без инструментов.wizpad wrote:...найти ключевое словосочетание, потом перейти на следующую строку и заменить ее на свой текст.
А именно - ищем "нет на складе", и заменяем следующую строку (+1) на свой текст... : <quantity>0</quantity>
Как это реализовать быстро и с помощью каких инструментов?
Стандартный диалог замены
Что:
Code: Select all
(?-s)(^.*Нет на складе.*)(\n.*<quantity>)(\d+)(<\/quantity>)Code: Select all
\1\2\u0030\4Оговорки и допущения:
1. Предполагается, что текущее количество выражено только в целых числах.
2. Меняется любое целое число внутри тега на ноль. При подстановке в качестве "нуля" использован "\u0030" чтобы не путаться в номерах обратных ссылок.
3. Можно отбросить четвертую группу (<\/quantity>) и соответствующую ей обратную ссылку (\4). 4. В первой группе поиск с начала строки также избыточен и его можно укоротить до (Нет на складе.*). Но на скорости это не должно особо отразиться.
5. Если исходить из желания максимально разгрузить первую часть (шаблон поиска), чтобы избежать возможных ошибок при его изменении, то взамен придётся "нагрузить" вторую часть замены:
Что:
Code: Select all
(?i-s)(нет на складе)(.*\n)(.*)Code: Select all
\1\2 <quantity>0</quantity>-
Offline
- Posts: 4
- Joined: Thu Apr 09, 2020 8:52 am
Re: Поиск - в одной строке, замена в следующей
Благодарю! Оба варианты работают. На старой версии выдало ошибку, на свежей работает.opk44 wrote: Если версия редактора не совсем древняя, то можно и без инструментов.
Стандартный диалог замены
Возможно ли это все запустить из командной строки, чтобы подсунуть фаил и пройтись разными ключевыми словами?
-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
wizpad
1. Для того, чтобы узнать "возможно ли", крайне полезно ознакомиться с документацией (раздел "Параметры командной строки"+"Ручные установки").
Данное чтение отлично "вострит ум и бодрит воображение".
2. На форуме работает поиск!
Среди 33 тысяч сообщений уже очень трудно не найти что-то или очень схожее или прямо идентичное практически любому "новому" вопросу.
Например....
3. На текущей (27-й) странице данной ветки только что в очередной раз обсуждался скрипт "MultiReplace.js". Затруднительно понять, каким образом вы этого не заметили.
4. Пункты 1+2+3 (документация+поиск+готовые решения) - это те самые "стандартные кирпичи" из которых строится практически любой "сарай" по индивидуальному проекту.
1. Для того, чтобы узнать "возможно ли", крайне полезно ознакомиться с документацией (раздел "Параметры командной строки"+"Ручные установки").
Данное чтение отлично "вострит ум и бодрит воображение".
2. На форуме работает поиск!
Среди 33 тысяч сообщений уже очень трудно не найти что-то или очень схожее или прямо идентичное практически любому "новому" вопросу.
Например....
3. На текущей (27-й) странице данной ветки только что в очередной раз обсуждался скрипт "MultiReplace.js". Затруднительно понять, каким образом вы этого не заметили.
4. Пункты 1+2+3 (документация+поиск+готовые решения) - это те самые "стандартные кирпичи" из которых строится практически любой "сарай" по индивидуальному проекту.
-
Offline
- Posts: 4
- Joined: Thu Apr 09, 2020 8:52 am
Смотрел. Для человека далекого от кодинга - тяжко осилить. Предполагал, что есть решение типа:opk44 wrote:wizpad
1. Для того, чтобы узнать "возможно ли", крайне полезно ознакомиться с документацией (раздел "Параметры командной строки"+"Ручные установки").
фаил.txt фаил сценария поиска и замены, сохранение.
Вероятно, тут сложнее чем bat фаил слепить
Искал. Искомое решение отсутствует. Возможно, мне так повезло с запросом "из командной строки поиск и замена", но на вторую страницу результата поиска уже выдает ошибку http://akelpad.sourceforge.net/forum/se ... 1&start=152. На форуме работает поиск!
Видел. Смотрел. К сожалению, применение к свое задаче не нашел. Где-то рядом, но развить самому не получилось3. На текущей (27-й) странице данной ветки только что в очередной раз обсуждался скрипт "MultiReplace.js". Затруднительно понять, каким образом вы этого не заметили.
Всегда стараюсь разобраться самостоятельно, перед запросом о помощи. Но тут - пассую.
Вам еще раз - слова благодарности, что помогаете простым юзерам)))
-
Offline
- Posts: 351
- Joined: Mon Jun 03, 2019 2:33 am
wizpad
Для множественной замены по сценарию могу предложить свою прогу TextReplace, обсудить можно тут
Для множественной замены по сценарию могу предложить свою прогу TextReplace, обсудить можно тут
-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
1. "Лепить" bat-файлы - это тоже разновидность кодинга, а сложность - понятие относительное. Но дело не в этом. Как говорилось в известном мультфильме "лучше день потерять, потом за пять минут долететь...Вперёд!".wizpad wrote:Смотрел. Для человека далекого от кодинга - тяжко осилить. Предполагал, что есть решение типа:
фаил.txt фаил сценария поиска и замены, сохранение.
Вероятно, тут сложнее чем bat фаил слепить
2. test.bat
Code: Select all
AkelPad.exe /Show(0) "c:\File_In.txt" /Call("Scripts::Main", 2, "MultiReplace.js") /SaveFile("C:\File_Out.txt") /QuitCode: 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
/Quit3. Ну и некоторые самоочевидные вещи:
файл скрипта можно и нужно переназвать, и оставить в нём только шаблоны замен (без цикла обхода вкладок)
после завершения этапа тестирования, но не ранее, можно "выходной" файл начать писать во "входной".
"Обжиг горшков" закончен.