Zireael |
Отправлено: 01 Января, 2023 - 10:56:27
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Скопировать нужный текст в буфер, запустить скрипт.
CODE:string text;
readclipboard(text); // получить текст из буфера обмена
messagebox(text);
string result[999];
int count = regexsearch(999, #result[0], text, "(?<<div class=.size-val size-opt.>)\d+(?=</div>)");
messagebox("Найдено совпадений: " + format(count));
for(int i=0; i<count; i++)
{
messagebox(result[i]);
}
Данное регулярное выражение ищет число между <div class="size-val size-opt"> и </div>.
Цитата: Парсер или просто не запускается (Kibor не отвечает) либо выдает ошибку
Скорее всего неверно составлен шаблон поиска. Возможно не экранированы кавычки.(Отредактировано автором: 01 Января, 2023 - 10:58:35) |
|
|
Kibor |
Отправлено: 01 Января, 2023 - 10:59:50
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
CODE:string Rez_Parser_Kib;
int eCol_Kib, eX_Kib, eY_Kib;
getdisplay(eCol_Kib, eX_Kib, eY_Kib);
string T="<div class=^"size-val size-opt^">36</div>^r^n"+
"<div class=^"size-val size-opt^">37</div>^r^n"+
"<div class=^"size-val size-opt^">38</div>^r^n"+
"<div class=^"size-val size-opt^">43</div>";
messagebox(T);
ParserStart(T, 0, "<br>", "известно", 0, 0);
loop()
{
goto KIB_2;
KIB_5: messagebox(Rez_Parser_Kib);
goto KIB_C6;
KIB_2: if (parser(-1, "size-opt^">", #Rez_Parser_Kib, 5, "</div")==1) goto KIB_5;
goto KIB_7;
KIB_C6:
}
goto KIB_Exit;
KIB_7: messagebox("Финиш");
KIB_Exit:;
function ParserStart(string text, int zp, string zona1, string zona2, int sm1, int sm2)
{
if (zp)
{
if (sm1!=0 || sm2!=0)text=cuttext(text, zona1, sm1, zona2, sm2);
else text=cuttext(text, zona1, zona2);
}
parserstart(text);
}
(Добавление)
Или просто код без визуального редактора
CODE:string Rez_Parser_Kib;
string T="<div class=^"size-val size-opt^">36</div>^r^n"+
"<div class=^"size-val size-opt^">37</div>^r^n"+
"<div class=^"size-val size-opt^">38</div>^r^n"+
"<div class=^"size-val size-opt^">43</div>";
messagebox(T);
parserstart(T);
loop()
{
if (parser(-1, "size-opt^">", #Rez_Parser_Kib, 5, "</div")==1) messagebox(Rez_Parser_Kib);
else break;
}
messagebox("Финиш"); |
|
|
MMalinovskij |
Отправлено: 01 Января, 2023 - 14:55:13
|
Прохожий
Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2022
Репутация: 0
|
Kibor пишет: <a href=" (для просмотра ссылки Вам необходимо авторизоваться) src="https://i.ibb.co/M1Qyr8G/11.jpg" alt="11" border="0"></a>
CODE:string Rez_Parser_Kib;
int eCol_Kib, eX_Kib, eY_Kib;
getdisplay(eCol_Kib, eX_Kib, eY_Kib);
string T="<div class=^"size-val size-opt^">36</div>^r^n"+
"<div class=^"size-val size-opt^">37</div>^r^n"+
"<div class=^"size-val size-opt^">38</div>^r^n"+
"<div class=^"size-val size-opt^">43</div>";
messagebox(T);
ParserStart(T, 0, "<br>", "известно", 0, 0);
loop()
{
goto KIB_2;
KIB_5: messagebox(Rez_Parser_Kib);
goto KIB_C6;
KIB_2: if (parser(-1, "size-opt^">", #Rez_Parser_Kib, 5, "</div")==1) goto KIB_5;
goto KIB_7;
KIB_C6:
}
goto KIB_Exit;
KIB_7: messagebox("Финиш");
KIB_Exit:;
function ParserStart(string text, int zp, string zona1, string zona2, int sm1, int sm2)
{
if (zp)
{
if (sm1!=0 || sm2!=0)text=cuttext(text, zona1, sm1, zona2, sm2);
else text=cuttext(text, zona1, zona2);
}
parserstart(text);
}
(Добавление)
Или просто код без визуального редактора
CODE:string Rez_Parser_Kib;
string T="<div class=^"size-val size-opt^">36</div>^r^n"+
"<div class=^"size-val size-opt^">37</div>^r^n"+
"<div class=^"size-val size-opt^">38</div>^r^n"+
"<div class=^"size-val size-opt^">43</div>";
messagebox(T);
parserstart(T);
loop()
{
if (parser(-1, "size-opt^">", #Rez_Parser_Kib, 5, "</div")==1) messagebox(Rez_Parser_Kib);
else break;
}
messagebox("Финиш");
Спасибо, помогло, только я не понимаю по какой логике это работает и что именно нужно подучить, пытаюсь по примеру вытащить данные указанные ниже вылетают так же ошибки
<td colspan="2"><nobr>J0018</nobr></td>
<td colspan="2"><nobr>J0017</nobr></td>
<td colspan="2"><nobr>J0015</nobr></td>
Пробовал
td colspan="2"><nobr^">"..."</nobr"
"2"><nobr^">"..."</nobr" |
|
|
Kibor |
Отправлено: 01 Января, 2023 - 15:12:53
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
MMalinovskij пишет: только я не понимаю по какой логике это работает и что именно нужно подучить
CODE:"td colspan=^"2^"><nobr^">"..."</nobr";
"^"2^"><nobr^">"..."</nobr"
MMalinovskij пишет: и что именно нужно подучить
Экранирующий символ |
|
|
MMalinovskij |
Отправлено: 01 Января, 2023 - 15:15:13
|
Прохожий
Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2022
Репутация: 0
|
Kibor пишет: MMalinovskij пишет: только я не понимаю по какой логике это работает и что именно нужно подучить
CODE:"td colspan=^"2^"><nobr^">"..."</nobr";
"^"2^"><nobr^">"..."</nobr"
MMalinovskij пишет: и что именно нужно подучить
Экранирующий символ
Значение J0018
<td colspan="2"><nobr>J0018</nobr></td> |
|
|
Zireael |
Отправлено: 01 Января, 2023 - 15:46:16
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: <td colspan="2"><nobr>J0018</nobr></td>
Проще заменить кавычки на точки. Точка будет означать один любой символ.
Т. е. искать между: <td colspan=.2.><nobr> и </nobr></td>
Цитата: regexsearch(999, #result[0], text, "(?<<div class=.size-val size-opt.> )\d+(?=</div> )" );
После ?< равно не дописал, должно быть так:
CODE:regexsearch(999, #result[0], text, "(?<=<div class=.size-val size-opt.>)\d+(?=</div>)"); (Отредактировано автором: 01 Января, 2023 - 15:50:52) |
|
|
MMalinovskij |
Отправлено: 01 Января, 2023 - 18:03:33
|
Прохожий
Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2022
Репутация: 0
|
Kibor пишет: MMalinovskij пишет: только я не понимаю по какой логике это работает и что именно нужно подучить
CODE:"td colspan=^"2^"><nobr^">"..."</nobr";
"^"2^"><nobr^">"..."</nobr"
MMalinovskij пишет: и что именно нужно подучить
Экранирующий символ
по какой то причине выдает пустой месседжбокс
<span style="font-family: "Helvetica Neue", Helvetica, "Lucida Grande", tahoma, verdana, arial, sans-serif, serif, EmojiFont; font-size: 22px; line-height: 22px; font-weight: bold; letter-spacing: 5px;">607407</span>
необходимо спарсить 607407[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Здесь такая же проблема
<td colspan="2"><nobr>J0018</nobr></td>
необходимо спарсить J0018 [img](для просмотра ссылки Вам необходимо авторизоваться) /img] |
|
|
|