Что нового

[Автоматизация] Как выбрать сразу несколько выражений?

gezan1

Новичок
Сообщения
46
Репутация
0
Добрый день.
Снова затупил.Подскажите как составить ТАКУЮ конструкцию, что бы искало сразу все варианты-"100", "101"и "102." В данном примере должно находится "101"
Код:
#include <Array.au3>

$sText='<span class="eventNumber">153</span>Соки<span class="detailArrowClose"><span class="eventNumber">1534</span>Воды<span class="detailArrowClose"></span><div class="eventScore"inline;">101</div><div id="event none;"></div><div id= none;"></div></div></td><td class=OTD1">38</td></td><td class=OTD2">15</td>'
$sSubString = '(?si).*an>(.+?)<sp.*100.*?OTD1">(.+?)<.*?OTD2">(.+?)<'

if $aData = StringRegExp( $sText,$sSubString ,  3 ) Then
	_ArrayDisplay($aData)
ConsoleWrite("  "&$aData[0] &$aData[1]&$aData[2]&@CRLF)
	Else
	$sSubString1 = '(?si).*an>(.+?)<sp.*101.*?OTD1">(.+?)<.*?OTD2">(.+?)<'
	if $aData1= StringRegExp( $sText,$sSubString1 ,  3 ) Then
ConsoleWrite("  "&$aData1[0] &$aData1[1]&$aData1[2]&@CRLF)
	_ArrayDisplay($aData1)
	Else
$sSubString2 = '(?si).*an>(.+?)<sp.*102.*?OTD1">(.+?)<.*?OTD2">(.+?)<'
if $aData2 = StringRegExp( $sText,$sSubString2 ,  3 )Then
ConsoleWrite("  "&$aData2[0] &$aData2[1]&$aData2[2]&@CRLF)
	_ArrayDisplay($aData2)
EndIf
	EndIf
	EndIf
 

СН3СН2ОН

Знающий
Сообщения
78
Репутация
12
Я таки не понял что ты там хотел выбрать.
Но код заменить можно
Вместо этих
Код:
$sSubString1 = '(?si).*an>(.+?)<sp.*101.*?OTD1">(.+?)<.*?OTD2">(.+?)<'

Вставь
Код:
$sSubString1 = '(?si).*an>(.+?)<sp.*[0-9]{0,3}.*?OTD1">(.+?)<.*?OTD2">(.+?)<'

Или
Код:
$sSubString1 = '(?si).*an>(.+?)<sp.*\d{3}.*?OTD1">(.+?)<.*?OTD2">(.+?)<'
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
#include <Array.au3>

$sText='<span class="eventNumber">153</span>Соки<span class="detailArrowClose"><span class="eventNumber">1534</span>Воды<span class="detailArrowClose"></span><div class="eventScore"inline;">101</div><div id="event none;"></div><div id= none;"></div></div></td><td class=OTD1">38</td></td><td class=OTD2">15</td>'

$sSubString = '(?si).*an>(.+?)<sp.*(?:100|101|102)*?OTD1">(.+?)<.*?OTD2">(.+?)<'

$aData = StringRegExp( $sText,$sSubString ,  3 )

If Not @error Then _ArrayDisplay($aData)
 

СН3СН2ОН

Знающий
Сообщения
78
Репутация
12
;) а если там будет 106.....300
Обновлю мою переделку от edyapd
Код:
$sSubString1 = '(?si).*an>(.+?)<sp.*>\d{1,7}<.*?OTD1">(.+?)<.*?OTD2">(.+?)<'
 
Автор
G

gezan1

Новичок
Сообщения
46
Репутация
0
Спасибо C2H5OH !!!
Находит все хорошо.Но хотелось бы разнообразия(привязке к "101") в выводе в
Код:
_ArrayDisplay($aData)
,или лучше в
Код:
MsgBox(0,"101",$aData[1]&$aData[2],5)
Что-бы визуально быстрее определить , что "$aData[1]&$aData[2]" относятся к выражению "101".
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
$sSubString = '(?si).*an>(.+?)<sp.*(100|101|102)*?OTD1">(.+?)<.*?OTD2">(.+?)<'
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
gezan1, вы бы привели более полный код, из которого надо делать выборку. Как мне кажется у вас ещё возникнут по этому поводу вопросы. И будут постояно меняться поставленные условия для выборки.
Ну и в догонку к выше написанным
Код:
$sSubString = '(?si).*?>\d{4}<.*?an>(.+?)<sp.*?>(\d{3,7})<.*?OTD1">(.+?)<.*?OTD2">(.+?)<'
 
Верх