Что нового

[RegExp] Нужный текст из HTML страницы (проблема с поиском)

Статус
Закрыто для дальнейших ответов.

Trans

Знающий
Сообщения
257
Репутация
6
ребят помогите рещить делему, пытаюсь найти нужный текст из страницы, а почему выдаёт полностью ХТМЛ код страницы, вместо нужного мне (394_l1sn1)
Код:
Func Test()
Local $HTML ='<td style="padding:0px"><a href="teritory.php?l=1&amp;x=393&amp;uni=1351842207" style="cursor:pointer"><img src="../images/l1/l1sd1/393_l1sd1.jpg" width="70" height="70" border="0" /></a></td>' & @LF & '<td style=" background-color: #00CC00; padding:0px" align="center"><img src="teritory_files/394_l1sn1.jpg" border="0" height="68" width="68"></td>'
Local	$UserPoz = StringRegExpReplace($HTML, '.*<img src="teritory_files/(.*?).jpg.*', '$1')
MsgBox(0, 'Сообщение', $UserPoz)
EndFunc
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Нужно достать названия jpeg-ов? У тебя два таких в строке.

Код:
Local $HTML ='<td style="padding:0px"><a href="teritory.php?l=1&amp;x=393&amp;uni=1351842207" style="cursor:pointer"><img src="../images/l1/l1sd1/393_l1sd1.jpg" width="70" height="70" border="0" /></a></td>' & @LF & '<td style=" background-color: #00CC00; padding:0px" align="center"><img src="teritory_files/394_l1sn1.jpg" border="0" height="68" width="68"></td>'
Local $UserPoz = StringRegExpReplace($HTML, '.+\/(.+?)\.jpg.+', '\1')
MsgBox(0, 'Сообщение', $UserPoz)



Обрати внимание, твой регекс:
Код:
'.*<img src="teritory_files/(.*?).jpg.*'

Метасимволы [ ] \ / ^ $ . | ? * + ( ) { } нужно экранировать слешем: \[, \^, \( и т.д., чтобы они воспринимались "как есть", а не как управляющие конструкции регулярного выражения. Угловые скобки <> экранировать не обязательно, но желательно.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Код:
$sData = '<td style="padding:0px"><a href="teritory.php?l=1&amp;x=393&amp;uni=1351842207" style="cursor:pointer"><img src="../images/l1/l1sd1/393_l1sd1.jpg" width="70" height="70" border="0" /></a></td>' & @LF & '<td style=" background-color: #00CC00; padding:0px" align="center"><img src="teritory_files/394_l1sn1.jpg" border="0" height="68" width="68"></td>'
$aRes = StringRegExp($sData,'(?<=teritory_files/).*?(?=\.jpg)',1)
If IsArray($aRes) Then
	ConsoleWrite($aRes[0] & @LF)
Else
	ConsoleWrite("! Не найдено." & @LF)
EndIf
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
inverversВроде на вашем примере работает, но когда пытаюсь совместить с хтмл страницей, пишет, что не найдено =(


Добавлено:
Сообщение автоматически объединено:

Код:
Local $TeritoryHTML = _IEBodyReadHTML($oIE)
	Local	$UserPoz = StringRegExp($TeritoryHTML,'(?<=teritory_files/).*?(?=\.jpg)',1)
	If IsArray($UserPoz) Then
    ConsoleWrite($UserPoz[0] & @LF)
Else
    ConsoleWrite("! Не найдено." & @LF)
EndIf
	Sleep (5000)

вот код хтмл страницы
Код:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.25">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="200" />
<title>The Game</title>
<link rel="stylesheet" type="text/css" href="style99.css?v=04092012"/>
</head>
<body><div class="menu" align="center"> Природа</div><div class="chat"><img src="img/st_upgrade.gif" alt="Уровень" title="Уровень" border="0" /> <span class="svet">21</span> [17%] <img src="img/rubin.gif" border="0" /> 0 <img src="img/money.gif" alt="WR" title="WR" border="0" /> -25898 <img src="img/aid.gif" alt="Травма" title="Травма" border="0" /> 3:29 <img src="img/clock.gif" border="0" /> 22:28</div><div class="chat"><span class="chat_txt">Чат:</span> <a href="chat.php?uni=1351884487">общий</a>, <a href="/wap/teritory.php?l=1&x=394&uni=1351884486&chatmode=my">мой</a>, <a href="/wap/teritory.php?l=1&x=394&uni=1351884486&chatmode=add">написать</a></div><table border="0" cellpadding="0" cellspacing="0" class="ramka">
  <tr>
  <td style="padding:0px"><a href="teritory.php?l=1&amp;x=358&amp;uni=1351884487" style="cursor:pointer"><img src="../images/l1/l1sn1/358_l1sn1.jpg" width="70" height="70" border="0" /></a></td>
  <td style="padding:0px"><a href="teritory.php?l=1&amp;x=359&amp;uni=1351884487" style="cursor:pointer"><img src="../images/l1/l1sn1/359_l1sn1.jpg" width="70" height="70" border="0" /></a></td>
  <td style="padding:0px"><a href="teritory.php?l=1&amp;x=360&amp;uni=1351884487" style="cursor:pointer"><img src="../images/l1/l1sn1/360_l1sn1.jpg" width="70" height="70" border="0" /></a></td>
  </tr>
  <tr>
  <td style="padding:0px"><a href="teritory.php?l=1&amp;x=393&amp;uni=1351884487" style="cursor:pointer"><img src="../images/l1/l1sn1/393_l1sn1.jpg" width="70" height="70" border="0" /></a></td>
  <td align="center" style=" background-color: #00CC00; padding:0px"><img src="../images/l1/l1sn1/394_l1sn1.jpg" width="68" height="68" border="0" /></td>
  <td style="padding:0px"><a href="teritory.php?l=1&amp;x=395&amp;uni=1351884487" style="cursor:pointer"><img src="../images/l1/l1sn1/395_l1sn1.jpg" width="70" height="70" border="0" /></a></td>
  </tr>
  <tr>
  <td style="padding:0px"><a href="teritory.php?l=1&amp;x=428&amp;uni=1351884487" style="cursor:pointer"><img src="../images/l1/l1sn1/428_l1sn1.jpg" width="70" height="70" border="0" /></a></td>
  <td style="padding:0px"><a href="teritory.php?l=1&amp;x=429&amp;uni=1351884487" style="cursor:pointer"><img src="../images/l1/l1sn1/429_l1sn1.jpg" width="70" height="70" border="0" /></a></td>
  <td style="padding:0px"><a href="teritory.php?l=1&amp;x=430&amp;uni=1351884487" style="cursor:pointer"><img src="../images/l1/l1sn1/430_l1sn1.jpg" width="70" height="70" border="0" /></a></td>
  </tr>
</table>
<div class="contur" style="font-size:11px"><div class="header_mes" align="left"><strong><span class="svet">В этой клетке [3]:</span></strong> KiroO [20], nano4ka [1], pugovkin [0]
[ <a href="napad.php"><span style="color:#00FFFF">попытаться затеять драку</span></a> ]</div></div><div class="cont">
<div id="menuitems" align="left"><ul><li> <a href="main.php?uni=1351884487"> Главное меню</a></li><li> <a href="gorod.php?uni=1351884487"> Город - Центр</a></li><li> <a href="quest.php?uni=1351884487"> Стражник у ворот</a></li><li> <a href="game.php?uni=1351884487"> Ваш персонаж</a></li><li> <a href="inventar.php?uni=1351884487"> Инвентарь</a></li><li> <a href="teleport.php?uni=1351884487"> Телепорт в город</a></li><li> <a href="terview.php?l=1&amp;uni=1351884487"> Мини-карта</a></li></ul></div></div>
<div class="foot"> [<a href="exit.php"> Выход </a>]
</div>
</body>
</html>
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
На этой странице видимо другой код. Даже простым поиском нельзя найти teritory_files.
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
действительно код страницы изменился...
теперь даже не представляю как искать нужную картинку... ведь папка картинок постоянно меняется, хотя может кто подскажет как сделать поиск по окончанию?!
по такому принципу
(название jpg файла).jpg" width="68" height="68" border="0"
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Trans
В регэкспах не разбираюсь, но можно с помощью строковых функций попробовать решить задачу:

Код:
; НАЧАЛО

 $HTML ='<td style="padding:0px"><a href="teritory.php?l=1&amp;x=393&amp;uni=1351842207" style="cursor:pointer"><img src="../images/l1/l1sd1/393_l1sd1.jpg" width="70" height="70" border="0" /></a></td>' & @LF & '<td style=" background-color: #00CC00; padding:0px" align="center"><img src="teritory_files/394_l1sn1.jpg" border="0" height="68" width="68"></td>'
 $B=StringInStr($HTML,'height="68"')
 $B=StringInStr($HTML,'<',0,-1,$B)
 $B=StringInStr($HTML,'src',0,1,$B)
 $B=StringInStr($HTML,'/',0,1,$B)+1
 $E=StringInStr($HTML,'"',0,1,$B)
 MsgBox(0,'',StringMid($HTML,$B,$E-$B))

; КОНЕЦ
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Не идеал, но можно так:
Код:
Global $find, $text
Dim $rez

$text ='<td style="padding:0px"><a href="teritory.php?l=1&amp;x=393&amp;uni=1351842207" style="cursor:pointer"><img src="../images/l1/l1sd1/393_l1sd1.jpg" width="70" height="70" border="0" /></a></td><td style=" background-color: #00CC00; padding:0px" align="center"><img src="teritory_files/394_l1sn1.jpg" border="0" height="68" width="68"></td>'
$rez = StringRegExp($text, '(?i)[\/](\d+[\_]\S+)[\.]jpg.*68.*68', 3)
If IsArray($rez) Then
    $find = $rez[0]&'.jpg'
Else
    $find = '0'
EndIf
MsgBox('', '', $find)
 

focus

Осваивающий
Сообщения
69
Репутация
20
Предложу свой вариант - поиск (привязка) к окончанию

Код:
#include <String.au3>
#include <Array.au3>

 $sText ='<td style="padding:0px"><a href="teritory.php?l=1&amp;x=393&amp;uni=1351842207" style="cursor:pointer"><img src="../images/l1/l1sd1/393_l1sd1.jpg" width="70" height="70" border="0" /></a></td>' & @LF & '<td style=" background-color: #00CC00; padding:0px" align="center"><img src="teritory_files/394_l1sn1.jpg" border="0" height="68" width="68"></td>'

 $sS1 = '"teritory_files/'
 $sS2 = '" border="0" height="68" width="68"></td>'

      $aArray1 = _StringBetween($sText, $sS1, $sS2)
         ;_ArrayDisplay($aArray1, 'Default Search')
	  ConsoleWrite($aArray1[0] & @CRLF)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
vasykas [?]
у меня похожая проблема
Соответственно названию темы, почти у всех кто как то связывается с RegExp, есть похожая проблема.

Заголовок уж слишком общего характера, поэтому тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Верх