Автор Тема: [Данные, строки] Правильное регулярное выражение  (Прочитано 1702 раз)

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

Оффлайн ahees [?]

  • Новичок
  • *
  • Сообщений: 7
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Доброго времени суток! Появилась небольшая проблемка с вырезанием необходимого кода страницы.
есть строка:<img id="im" style="width: 160px; height: 80px;" src="/im2/index.php?94d8d7a3948ca3fb90c57ca3c646b129=5c81724b6e7680f7689ea3ac317f9b9b&amp;r=3d251a5326c1711c3edc799d24fb2f2f">
пытаюсь вытянуть
(нажмите для показа/скрытия)
пробовал следующий способ:
Код: AutoIt [Выделить]
$TEXT=_IEDocReadHTML($oIE)
 $P=StringInStr($TEXT,'im2/index.php?')
    If ($P > 104) Then
      MsgBox(0,"","Подстрока не найдена...")
      Exit
    EndIf
    $P=$P+15
    $S=StringMid($TEXT,$P,104+4)    
 
    ConsoleWrite($S)
 

так добавляеться лишний ;amp =(
Пробовал второй способ:
Код: AutoIt [Выделить]
$sPattern = '/im2/index.php?'
$sResult = StringRegExpReplace($read, $sPattern, '')
;ConsoleWrite($sResult & @CRLF)
$sPattern2 = '">'
$sResult1 = StringRegExpReplace($sResult, $sPattern2, '')
ConsoleWrite($sResult1 & @CRLF)
 

но он работает только в тесте, где я беру 1 строчку, а если на всей странице - печаль :(
Буду рад помощи по составлению регулярного выражения

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

[Данные, строки] Правильное регулярное выражение
« Отправлен: Декабрь 17, 2014, 02:53:39 »

Помечен как лучший ответ пользователем ahees Отправлен Декабрь 17, 2014, 15:33:57

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
ahees,
Попробуйте так.
Код: AutoIt [Выделить]
$sHTML = FileRead(@ScriptDir & '\1.html')
$sSearch = StringRegExpReplace($sHTML, '(?s).*/im2/index.php\?(.+?)">.*', '$1')
;~ $sSearch = StringRegExpReplace($sHTML, '(?s).*id="im".*?/im2/index.php\?(.+?)">.*', '$1')
If @extended = 1 Then
    ConsoleWrite($sSearch & @LF)
Else
    ConsoleWrite('Error!!!' & @LF)
EndIf

Или так.
Код: AutoIt [Выделить]
#include <IE.au3>

Local $sUrl = @ScriptDir & '\1.html', _;поменяйте на Ваш адрес
        $oImg, $sSrc, $sSearch
Do
    $oIE = _IECreate($sUrl)
    If @error Then ExitLoop
    $oImg = _IEGetObjById($oIE, 'im')
    If @error Then ExitLoop
    $sSrc = $oImg.src
    If Not $sSrc Then ExitLoop
    $sSearch = StringRegExpReplace($sSrc, '^.*\?', '')
    If @extended <> 1 Then $sSearch = ''
Until 1
If $sSearch Then
    ConsoleWrite($sSearch & @LF)
Else
    ConsoleWrite('Error!' & @LF)
EndIf

« Последнее редактирование: Декабрь 17, 2014, 15:46:15 от madmasles »

Оффлайн ahees [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
madmasles,
лайк или плюс не нашел, пометил как лучший ответ. Проверил первый вариант - работает как нужно спасиб. Тема решена

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

Re: [Данные, строки] Правильное регулярное выражение
« Ответ #2 Отправлен: Декабрь 17, 2014, 15:35:38 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
1774 Просмотров
Последний ответ Ноябрь 22, 2013, 15:57:07
от inververs
0 Ответов
1187 Просмотров
Последний ответ Январь 12, 2014, 13:14:11
от madmasles
0 Ответов
747 Просмотров
Последний ответ Декабрь 17, 2014, 05:37:43
от madmasles
6 Ответов
5277 Просмотров
Последний ответ Май 10, 2016, 17:49:00
от disthyounossa1979bit
2 Ответов
989 Просмотров
Последний ответ Сентябрь 02, 2016, 22:45:36
от Alofa
2 Ответов
944 Просмотров
Последний ответ Сентябрь 11, 2016, 08:55:29
от DezmontDeXa
4 Ответов
2117 Просмотров
Последний ответ Декабрь 07, 2016, 16:50:42
от andriy111
1 Ответов
2133 Просмотров
Последний ответ Июнь 14, 2017, 15:05:18
от inververs
11 Ответов
216 Просмотров
Последний ответ Март 21, 2019, 12:28:50
от MaxHex
1 Ответов
79 Просмотров
Последний ответ Март 19, 2019, 02:23:43
от ЭйчЭйч