Автор Тема: [Данные, строки] поиск значения в активном окне по шаблону в StringRegExp  (Прочитано 2228 раз)

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

Оффлайн DStalker [?]

  • Я бы её, это самого... автоматизировал и зациклил
  • Новичок
  • *
  • Сообщений: 37
  • Репутация: 2
  • Пол: Мужской
  • Ботоводство+Мультибоксинг = время выспаться ;)
    • Награды
  • Версия AutoIt: 3.3.12.0
На странице имеются координаты точки типа (хх;уу), , где хх и уу может быть как отрицательным так и положительным.
Создаю ситуацию, пробую её решить, выходит поиск только по конкретному значению, а по шаблону вылетает, либо пишет ошибку  на $asResult[0]
Я пологаю что ошибка в моём шаблоне, который сделал по примеру SRE- урока.
Код: AutoIt [Выделить]
#include <IE.au3>
While 1
GUISetState()
$title=("Прямоугольная система координат")
$oIE = ObjCreate("Shell.Explorer.2")
GUICreate($title, 1200,  800, -1, -1);создаёт внешнее окно размером х,у
$GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, 1200, 800); ;создаёт окно с клиентом размером х1,у1
GUISetState()
WinActivate($title)
ControlClick($title, "" , "[CLASS:MacromediaFlashPlayerActiveX; INSTANCE:1]"); кликает по активному окну,
Sleep (500)
$oIE.navigate("http://shkolo.ru/pryamougolnaya-sistema-koordinat/")
WinActivate($title)
Sleep (500)

;поиск конкретного значения:
$sHTML = _IEBodyReadHTML($oIE)
$asResult = StringRegExp($sHTML, '\Q(-4; 1)\E', 1)
If @error == 0 Then
    MsgBox(0, "SRE 1, пример конкретное значение", $asResult[0])
EndIf

;поиск значения по шаблону:
$sHTML = _IEBodyReadHTML($oIE)
$asResult = StringRegExp($sHTML, '\Q(\E[-0-9]{1,3}\Q;\E[-0-9]{1,3}\Q)\E', 1)
If @error == 0 Then
    MsgBox(0, "SRE 2, пример поиск по шаблону", $asResult[0])
EndIf

Sleep (5000)
WEnd
 

По конкретному значению находит,ищем в HTML (-4; 1) и находим.
По шаблону не ищет или не выводит. Должно найтись что то типа (x;y)

'\Q(\E[-0-9]{1,3}\Q;\E[-0-9]{1,3}\Q)\E'
Шаблон косячный похоже ?  :whistle:

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


Оффлайн edyapd [?]

  • Осваивающий
  • **
  • Сообщений: 380
  • Репутация: 30
    • Награды
  • Версия AutoIt: 3.3.14.0
А если так'\([-0-9]{1,3}; [-0-9]{1,3}\)'Подсмотрел у Zak. Правильнее будет
'\(-?\d+?; -?\d+?\)'
« Последнее редактирование: Июнь 01, 2015, 12:28:26 от edyapd »

Помечен как лучший ответ пользователем DStalker Отправлен Июнь 01, 2015, 14:41:01

Оффлайн ---Zak--- [?]

  • Скриптер
  • ****
  • Сообщений: 438
  • Репутация: 113
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
В регулярках не очень силен:

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

GUISetState()
    $title = "Прямоугольная система координат"
    $oIE = ObjCreate("Shell.Explorer.2")
   
    GUICreate($title, 1200,  800, -1, -1);создаёт внешнее окно размером х,у
    $GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, 1200, 800); ;создаёт окно с клиентом размером х1,у1
        GUISetState()
        WinActivate($title)
    ControlClick($title, "" , "[CLASS:MacromediaFlashPlayerActiveX; INSTANCE:1]"); кликает по активному окну,
        Sleep (500)
    $oIE.navigate("http://shkolo.ru/pryamougolnaya-sistema-koordinat/")
        WinActivate($title)
        Sleep (500)
        _IELoadWait($oIE)

$sHTML = _IEBodyReadHTML($oIE)

$asResult = StringRegExp($sHTML, '\(\-?\d*; \-?\d*\)', 3)
    _ArrayDisplay($asResult)


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


 

Похожие темы

  Тема / Автор Ответов Последний ответ
24 Ответов
14780 Просмотров
Последний ответ Декабрь 10, 2009, 17:13:01
от gregaz
3 Ответов
5104 Просмотров
Последний ответ Май 13, 2011, 01:40:09
от n-deer
4 Ответов
3639 Просмотров
Последний ответ Апрель 11, 2012, 18:10:18
от Garrett
1 Ответов
1688 Просмотров
Последний ответ Март 06, 2013, 19:28:41
от InnI
2 Ответов
2923 Просмотров
Последний ответ Апрель 12, 2013, 09:05:55
от ---Zak---
0 Ответов
1576 Просмотров
Последний ответ Июнь 14, 2013, 20:12:29
от madmasles
4 Ответов
2329 Просмотров
Последний ответ Март 05, 2014, 14:04:11
от Yuriy
5 Ответов
3974 Просмотров
Последний ответ Апрель 07, 2015, 18:41:20
от darklord422
3 Ответов
1793 Просмотров
Последний ответ Июль 14, 2015, 17:52:26
от Vovsla
0 Ответов
586 Просмотров
Последний ответ Август 11, 2017, 10:03:51
от dimcomp