Автор Тема: StringRegExpReplace выборка из многих подобных строк одну  (Прочитано 775 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dere [?]

  • Новичок
  • *
  • Сообщений: 30
  • Репутация: 2
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.10.2
Добрый день.
Помогите или ткните где глянуть.
Есть кусок HTML, где много одинаковых "единиц", так надо выбрать из них один параметр который заключается между "<BR>Цена: <IMG src="img/main/money.png">" и </TD>, но найти этот переменную которая относится к определенному итему (up_item=11111). Т.е. получается item=11111 в коде страницы это уникальная единица.
к примеру
Код: AutoIt [Выделить]
$item = "11111"
$Cena = StringRegExpReplace($sHTML, '(?si).*<BR>Цена:\s<IMG\ssrc="img/main/money.png">((?-s).*?)</TD></TR></TBODY></TABLE><CENTER><A\shref="?up_item='&$item&'.*', '\1')
 

Так не находит, видимо потому это другая строка. Подскажите как выцепить.
<TD width=65><IMG src="img/item/nogi/c1.png"></TD>
<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.<BR>Цена: <IMG src="img/main/money.png">2000</TD></TR></TBODY></TABLE>
<CENTER><A href="?up_item=11111"><IMG src="img/inter/up.png"></A></CENTER></DIV>
<TABLE>
<TBODY>
<TR>
<TD width=65><IMG src="img/item/weapon/c1.png"></TD>
<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.<BR>Цена: <IMG src="img/main/money.png">3000</TD></TR></TBODY></TABLE>
<CENTER><A href="?up_item=22222"><IMG src="img/inter/up.png"></A></CENTER></DIV>
<TABLE>
<TBODY>
<TR>
<TD width=65><IMG src="img/item/golova/c1.png"></TD>
<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.<BR>Цена: <IMG src="img/main/money.png">4000</TD></TR></TBODY></TABLE>
<CENTER><A href="?up_item=33333"><IMG src="img/inter/up.png"></A></CENTER></DIV>
<TABLE>
<TBODY>
« Последнее редактирование: Май 15, 2018, 16:05:06 от Dere »

Русское сообщество AutoIt


Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 109
  • Репутация: 40
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Если надо просто найти совпадение, то вот так:
Код: AutoIt [Выделить]
#include <Array.au3>
$sText = '<TD width=65><IMG src="img/item/nogi/c1.png"></TD>' & @CRLF & _
         '<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.<BR>Цена: <IMG src="img/main/money.png">1000</TD></TR></TBODY></TABLE>' & @CRLF & _
         '<CENTER><A href="?up_item=11111"><IMG src="img/inter/up.png"></A></CENTER></DIV>' & @CRLF & _
         '<TABLE>' & @CRLF & _
         '<TBODY>' & @CRLF & _
         '<TR>' & @CRLF & _
         '<TD width=65><IMG src="img/item/weapon/c1.png"></TD>' & @CRLF & _
         '<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.<BR>Цена: <IMG src="img/main/money.png">3000</TD></TR></TBODY></TABLE>' & @CRLF & _
         '<CENTER><A href="?up_item=22222"><IMG src="img/inter/up.png"></A></CENTER></DIV>' & @CRLF & _
         '<TABLE>' & @CRLF & _
         '<TBODY>' & @CRLF & _
         '<TR>' & @CRLF & _
         '<TD width=65><IMG src="img/item/golova/c1.png"></TD>' & @CRLF & _
         '<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.<BR>Цена: <IMG src="img/main/money.png">4000</TD></TR></TBODY></TABLE>' & @CRLF & _
         '<CENTER><A href="?up_item=33333"><IMG src="img/inter/up.png"></A></CENTER></DIV>' & @CRLF & _
         '<TABLE>' & @CRLF & _
         '<TBODY>'

$sSearch = "11111"                      ; Искомая строка
$aResult = StringRegExp($sText, '(?s)<IMG src=\"img/main/money\.png\">([0-9]+)</TD></TR></TBODY></TABLE>[^<]+?<CENTER><A href=\"\?up_item=' & $sSearch & '\">', 3)
If Not @error Then
   _ArrayDisplay($aResult, "Найдено")
Else
   MsgBox(4096, "", "Совпадений не найдено")
EndIf

Upd. Неправильно прочитал, вот так работает
« Последнее редактирование: Май 15, 2018, 16:31:22 от gunter123 »
Is it future or is it past?

Оффлайн Dere [?]

  • Новичок
  • *
  • Сообщений: 30

  • Автор темы
  • Репутация: 2
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.10.2
Нет не совпадение, эта цена может быть любой. Нужно вычленить именно сумму по данному итему.

Онлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 320
  • Репутация: 56
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
$per = "11111"
$file = FileReadToArray(@ScriptDir & "\text.txt") ;прочитать html
For $i=0 To UBound($file)-1
    If IsArray(StringRegExp($file[$i], 'up_item='&$per, 3)) Then
        $price = StringRegExp($file[$i-1], "money.png.>(.*)<.TD>", 3)
        MsgBox(0, "", "Для " & $per & " цена " & $price[0])
    EndIf
Next
 


Русское сообщество AutoIt

Re: StringRegExpReplace выборка из многих подобных строк одну
« Ответ #3 Отправлен: Май 15, 2018, 16:54:31 »

Оффлайн Dere [?]

  • Новичок
  • *
  • Сообщений: 30

  • Автор темы
  • Репутация: 2
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.10.2
если по файлу работать то работает, спасибо и + в репу
И странность: на винде 10 работает, на ХР не захотел. Не понял "FileReadToArray".
а как сделать если это HTML?
« Последнее редактирование: Май 15, 2018, 17:20:50 от Dere »

Онлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 320
  • Репутация: 56
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
если по файлу работать то работает, спасибо и + в репу
И странность: на винде 10 работает, на ХР не захотел. Не понял "FileReadToArray".
а как сделать если это HTML?
Попилить html  в массив при помощи
Код: AutoIt [Выделить]
Или использовать вариант регулярки от gunter123

Оффлайн СН3СН2ОН [?]

  • Новичок
  • *
  • Сообщений: 78
  • Репутация: 11
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.2.8.1
Видимо автор этого хотел
Код: AutoIt [Выделить]
$item='11111'
$Cena = StringRegExpReplace($sHTML, '(?si).*Цена.*?>(.*?)<.*?item='&$item&'.*', '\1')
ConsoleWrite($Cena & @CRLF)
 

Япрофиэтосерьезно

Оффлайн Dere [?]

  • Новичок
  • *
  • Сообщений: 30

  • Автор темы
  • Репутация: 2
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.10.2
всем спасибо.
вопрос решил через StringSplit.

Русское сообщество AutoIt

Re: StringRegExpReplace выборка из многих подобных строк одну
« Ответ #7 Отправлен: Май 16, 2018, 16:01:16 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
5398 Просмотров
Последний ответ Февраль 07, 2013, 08:51:06
от exHalfer
2 Ответов
2169 Просмотров
Последний ответ Март 10, 2013, 13:47:22
от inververs
4 Ответов
3305 Просмотров
Последний ответ Октябрь 22, 2013, 23:18:18
от sngr
5 Ответов
2650 Просмотров
Последний ответ Апрель 16, 2014, 10:44:00
от AZJIO
8 Ответов
2557 Просмотров
Последний ответ Май 31, 2014, 20:32:01
от Z_Lenar
4 Ответов
1251 Просмотров
Последний ответ Октябрь 06, 2014, 16:22:41
от Нубокодер
0 Ответов
509 Просмотров
Последний ответ Апрель 16, 2016, 10:05:21
от Danya98
4 Ответов
1379 Просмотров
Последний ответ Ноябрь 07, 2016, 21:49:29
от Dima1337
4 Ответов
609 Просмотров
Последний ответ Декабрь 14, 2017, 12:24:48
от serg41
6 Ответов
581 Просмотров
Последний ответ Июль 17, 2018, 18:04:06
от Alofa