Что нового

[RegExp] При смене одной буквы регвыр перестает работать

MaxTyT

Новичок
Сообщения
4
Репутация
0
В html файле находится следующее:
Код:
<span id=resources_metal clas>13453</span>
Создаю регулярку:
Код:
$oIE = _IECreate("file://localhost/D:/og.html")
$sTextHTML = _IEDocReadHTML($oIE)
$rMet = StringRegExp($sTextHTML,"(?si)<span id=resources_metal clas>(\d*?)<",3)
MsgBox(0, "Метал", $rMet[0])
Стоит изменить слово clas на class или на clas=, перестает работать регулярка! Но если на clasd, то все норм.
Полдня перебираю разные варианты, в чем дело?

PS. Так работает:
Код:
StringRegExp("<span id=resources_metal class>13453</span>","(?si)<span id=resources_metal class>(\d*?)<",3)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
Re: [RegExp] Непонятная проблема с регуляркой

Непонятное название темы!

{TopicNameWarn.Admin}
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Re: [RegExp] Непонятная проблема с регуляркой

MaxTyT сказал(а):
В html файле находится следующее:
Код:
<span id=resources_metal clas>13453</span>
Стоит изменить слово clas на class или на clas=, перестает работать регулярка! Но если на clasd, то все норм.
Полдня перебираю разные варианты, в чем дело?
Не понял, зачем менять clas на class если в тексте написано clas?

MaxTyT сказал(а):
PS. Так работает:
Код:
StringRegExp("<span id=resources_metal class>13453</span>","(?si)<span id=resources_metal class>(\d*?)<",3)
Здесь class везде с двумя s.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: [RegExp] Непонятная проблема с регуляркой

Код:
$rMet = StringRegExp($sTextHTML,"<span.*?>(.*?)</span>",1)
 
Автор
M

MaxTyT

Новичок
Сообщения
4
Репутация
0
Re: [RegExp] Непонятная проблема с регуляркой

Непонятное название темы!
Ну и как бы ты назвал? Сколько ни работал с регулярками, впервые такой бред вижу :shok:

dwerf сказал(а):
Не понял, зачем менять clas на class если в тексте написано clas?
Потому что язык хтмл такой <span id="..." class="...">, стоит добавить что-либо после clas, как перестает работать.

Garrett сказал(а):
Код:
$rMet = StringRegExp($sTextHTML,"<span.*?>(.*?)</span>",1)
Спасибо, помогло, сделал так:
Код:
$rMet = StringRegExp($sTextHTML,"(?si)<span id=resources_metal.*?>(\d*?)<",3)


Называется сделали через пятую точку, но главное чтоб работало. :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: [RegExp] Непонятная проблема с регуляркой

опиши точнее, что есть в тексте и что ты хочешь получить? а то пока, действительно непонятно. в тексте clas но ты хочешь регвыр для class. где-то меняешь, а где не говоришь. но в целом, видится мне что "разруха - она не в сортирах"
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
MaxTyT [?]
Ну и как бы ты назвал?
Если бы я знал в чём моя проблема, то знал бы как назвать. Пока я не могу для себя сформулировать чётко проблему, я не буду создавать тему и спрашивать у других.

Текущее (новое) название гласит о неработоспособности движка рег. выражений, что в данном случае на мой взгляд неверно.
Приведи текст который нужно обработать, и ожидаемый результат.
 
Автор
M

MaxTyT

Новичок
Сообщения
4
Репутация
0
CreatoR сказал(а):
Приведи текст который нужно обработать, и ожидаемый результат.
Нужно конкретно отсюда достать цифры, при чем в хтмл-документе много разных span'ов с различными id:
Код:
<span id=resources_metal class>13453</span>
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
func ResourceGet($Val)
Switch $Val
Case 'metal'
    $Var = "resources_metal"
Case 'wood'
    $Var = "resources_wood"
Case Else
    msgbox(0,0,"Нет такого реса")
    Return -1
EndSwitch
Return _IEPropertyGet(_IEGetObjById($oIE, $Var), "innerText")
endfunc
 
Автор
M

MaxTyT

Новичок
Сообщения
4
Репутация
0
axlwor
Спасибо, этот вариант намного проще ;) И работает без проблем
 
Верх