Автор Тема: Поиск строки по двум словам и переменными между ними  (Прочитано 1743 раз)

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

Оффлайн DStalker [?]

  • Я бы её, это самого... автоматизировал и зациклил
  • Новичок
  • *
  • Сообщений: 37
  • Репутация: 2
  • Пол: Мужской
  • Ботоводство+Мультибоксинг = время выспаться ;)
    • Награды
  • Версия AutoIt: 3.3.12.0
Нужно найти строку с двумя словами, между которыми может быть пара переменных тройка цифро-символов...

Код: AutoIt [Выделить]
$fnd1=("слово1"&...&"слово2");
    $fnd1OK=StringInStr($sHTML,$fnd1,3)
                  If $fnd1OK <> 0 then
                MouseClick("left", 87, 37, 1, 0) ;
                Sleep(200)
                      EndIf

Вот между слово1 и слово2 троеточие, тут что то надо вставить, а я допереть не могу.
Например, если искать "космопорт 100|07 Ортредисов",то $fnd1=("космопорт"&...&"Ортредисов"); а что вставить вместо троеточия так, чтобы шаблон смог найти строку  "космопорт 100|07 Ортредисов"

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


Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1433
  • Репутация: 212
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
Local $fnd1[2] = ['космопорт', 'ортредисов']
$sText = 'космопорт 100|07 Ортредисов'

If StringInStr($sText, $fnd1[0]) And StringInStr($sText, $fnd1[1]) Then MsgBox(262144, Default, $sText)
; И Л И
If StringRegExp($sText, '(?i)' & $fnd1[0] & '.+' & $fnd1[1]) Then MsgBox(262144, Default, $sText)


OffTopicDStalker в будущем указывайте работоспособный кусок скрипта.

Помечен как лучший ответ пользователем DStalker Отправлен Март 05, 2018, 00:19:24

Оффлайн DStalker [?]

  • Я бы её, это самого... автоматизировал и зациклил
  • Новичок
  • *
  • Сообщений: 37

  • Автор темы
  • Репутация: 2
  • Пол: Мужской
  • Ботоводство+Мультибоксинг = время выспаться ;)
    • Награды
  • Версия AutoIt: 3.3.12.0
код рабочий ошибка нерабочисти на $sHTML, просто $sHTML-это ссылка на локальный файл с текстом который и нужно проверить маской на соответствие, т.о. небыло смысла его тянуть весь из за размеров..

Ваш пример мне помог понять где у меня косяк. Т.е. сам пример не подошёл, но тем самым я понял где косяк...
$sHTML итый файл нужно проверить маской-шаблоном на соответствие, частный случай маски 'космопорт 100|07 Ортредисов', общий же случай 'космопорт????????Ортредисов' .  Затыка оказалась в StringInStr, которая не читает регуляярные выражения :laugh: и тем самым шаблон, написанный правильно он не видит. поменяв же на StringRegExp
все сразу заработало. Спасибо. Выкладываю корректный код после исправления:
Было:

Код: AutoIt [Выделить]
$sHTML=('http://autoit-script.ru/index.php');файл index.php с текстом который и нужно проверить маской на соответствие
$fnd1=("космопорт "&...&" Ортредисов");тут в троеточии нужна маска
    $fnd1OK=StringInStr($sHTML,$fnd1,3);StringInStr с маской не работает, тут косяк
                  If $fnd1OK <> 0 then
                MouseClick("left", 87, 37, 1, 0) ;
                Sleep(200)
                      EndIf

стало:

Код: AutoIt [Выделить]
$sHTML=('http://autoit-script.ru/index.php');файл index.php с текстом который и нужно проверить маской на соответствие
$fnd1=("космопорт "&'\d*|\d*'&" Ортредисов");тут УЖЕ маска
    $fnd1OK=StringRegExp($sHTML,$fnd1,3);StringRegExp с маской  работает, тут БЫЛ косяк
                  If $fnd1OK <> 0 then
                MouseClick("left", 87, 37, 1, 0) ;
                Sleep(200)
                      EndIf

:beer:

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1433
  • Репутация: 212
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
DStalker  [?]
Цитировать
...Выкладываю корректный код после исправления:
Цитировать
Код: AutoIt [Выделить]
$fnd1=("космопорт "&'\d*|\d*'&" Ортредисов");тут УЖЕ маска

Под эту маску подойдут и такие строки: "космопорт ",  "77 Ортредисов", "космопорт Ортредисов", " Ортредисовкосмопорт ".

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

Re: Поиск строки по двум словам и переменными между ними
« Ответ #3 Отправлен: Март 05, 2018, 00:51:15 »

Оффлайн DStalker [?]

  • Я бы её, это самого... автоматизировал и зациклил
  • Новичок
  • *
  • Сообщений: 37

  • Автор темы
  • Репутация: 2
  • Пол: Мужской
  • Ботоводство+Мультибоксинг = время выспаться ;)
    • Награды
  • Версия AutoIt: 3.3.12.0
да,  вы правы, если будут появляться ненужные мне результаты поиска, то маску уточню

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1433
  • Репутация: 212
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
А $sHTML это файл который нужно скачать сначала, прочитать и проверить?
Или просто проверить строку адреса?


Добавлено: Март 05, 2018, 01:30:47
Код: AutoIt [Выделить]
$fnd1="космопорт \d+\|\d+ Ортредисов";такой шаблон вам нужен
    $fnd1OK=StringRegExp($sHTML,$fnd1,3);StringRegExp с индексом 3 возвращает массив
                  If $fnd1OK <> 0 then ; ... а массив так обычно не проверяют


Оффлайн DStalker [?]

  • Я бы её, это самого... автоматизировал и зациклил
  • Новичок
  • *
  • Сообщений: 37

  • Автор темы
  • Репутация: 2
  • Пол: Мужской
  • Ботоводство+Мультибоксинг = время выспаться ;)
    • Награды
  • Версия AutoIt: 3.3.12.0
$sHTML=('http://autoit-script.ru/index.php');файл index.php с текстом который и нужно проверить маской на соответствие.
проверить текст в файле, что файл соответствует шаблону. После подтверждения соответствия идёт заказ юнитов. в данном примере 7из100 еще 93 можно заказать, т.е. кликнуть 93 раза.

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

Re: Поиск строки по двум словам и переменными между ними
« Ответ #6 Отправлен: Март 05, 2018, 04:51:27 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
9169 Просмотров
Последний ответ Май 05, 2010, 23:39:01
от CreatoR
2 Ответов
3806 Просмотров
Последний ответ Май 05, 2011, 13:30:29
от Ranos1982
15 Ответов
11453 Просмотров
Последний ответ Июнь 26, 2011, 00:50:40
от Garrett
31 Ответов
13492 Просмотров
Последний ответ Июль 23, 2012, 09:32:04
от CreatoR
3 Ответов
2227 Просмотров
Последний ответ Август 31, 2012, 15:57:49
от Geqsogen
8 Ответов
3643 Просмотров
Последний ответ Июль 04, 2014, 08:57:19
от alex33
1 Ответов
6299 Просмотров
Последний ответ Октябрь 17, 2014, 23:49:24
от Garrett
6 Ответов
3948 Просмотров
Последний ответ Апрель 17, 2015, 14:03:33
от Garrett
1 Ответов
911 Просмотров
Последний ответ Декабрь 17, 2015, 03:21:31
от Alofa
2 Ответов
324 Просмотров
Последний ответ Январь 29, 2018, 04:22:24
от lixar21