Что нового

[RegExp] Поиску в html мешают скобки

Alexl82

Новичок
Сообщения
4
Репутация
1
Здравствуйте, подобные темы есть, но у меня одна тонкость.
Нужно получить данные со страницы, например о количестве мечников, которых 242. Но не могу нормально осуществить поиск из-за большого количества скобок.
Код:
<TD class=nowrap><A href="javascript:popup_scroll('popup_unit.php?unit=spear', 520, 520)"><IMG title=копейщик alt="" src="graphic/unit/unit_spear.png?1"></A> <INPUT id=unit_input_spear class=unitsInput tabIndex=1 size=5 type=text name=spear> <A href="javascript:insertUnit($('#unit_input_spear'), 242)">(242)</A> </TD></TR>
<TR>
<TD class=nowrap><A href="javascript:popup_scroll('popup_unit.php?unit=sword', 520, 520)"><IMG title=мечник alt="" src="graphic/unit/unit_sword.png?1"></A> <INPUT id=unit_input_sword class=unitsInput tabIndex=2 size=5 type=text name=sword> <A href="javascript:insertUnit($('#unit_input_sword'), 132)">(132)</A> </TD></TR>

Если удалить скобки, то все работает. Как проделать то же самое, но при наличии скобок?
Напрашивается способ, производить поиск так: (\d*?.), и потом удалять последний символ, но я думаю должно быть более правильное решение.

Код:
$sHTML = "TD class=nowrap><A href='javascript:popup_scroll('popup_unit.php?unit=spear', 520, 520)'><IMG title=копейщик alt='' src='graphic/unit/unit_spear.png?1'></A> <INPUT id=unit_input_spear class=unitsInput tabIndex=1 size=5 type=text name=spear> <A href='javascript:insertUnit($('#unit_input_spear', 242'>(242)</A> </TD></TR>"
$aHleb = StringRegExp($sHTML, "unit_input_spear', (\d*?)'", 3)
        MsgBox(0, '', $aHleb[0])
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Код:
#include <array.au3>
$s		=	"<TD class=nowrap><A href=""javascript:popup_scroll('popup_unit.php?unit=spear', 520, 520)""><IMG title=копейщик alt="""" src=""graphic/unit/unit_spear.png?1""></A> <INPUT id=unit_input_spear class=unitsInput tabIndex=1 size=5 type=text name=spear> <A href=""javascript:insertUnit($('#unit_input_spear'), 242)"">(242)</A> </TD></TR>" & @CRLF & _
			"<TR>" & @CRLF & _
			"<TD class=nowrap><A href=""javascript:popup_scroll('popup_unit.php?unit=sword', 520, 520)""><IMG title=мечник alt="""" src=""graphic/unit/unit_sword.png?1""></A> <INPUT id=unit_input_sword class=unitsInput tabIndex=2 size=5 type=text name=sword> <A href=""javascript:insertUnit($('#unit_input_sword'), 132)"">(132)</A> </TD></TR>"
$pat	=	"(?s)unit_input_spear'\),\s(\d+)"
$aHleb = StringRegExp($s, $pat, 1)
MsgBox(0, '', $aHleb[0])
;_ArrayDisplay($aHleb)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Alexl82
Можно еще так попробовать:
Код:
$sWhat_1 = 'копейщик'
$sWhat_2 = 'мечник'
$sText = FileRead(@ScriptDir & '\1.txt')

$sResult_1 = StringRegExpReplace($sText, '(?s).*?' & $sWhat_1 & '.*?">\(?(\d+)\)?</A?.*', '\1')
$sResult_2 = StringRegExpReplace($sText, '(?s).*?' & $sWhat_2 & '.*?">\(?(\d+)\)?</A?.*', '\1')

MsgBox(64, 'Info', $sWhat_1 & ' = ' & $sResult_1 & @LF & _
		$sWhat_2 & ' = ' & $sResult_2)
В файле 1.txt Ваш текст. Должно искать и со скобками, и без (>(242)< или >242<)
 
Автор
A

Alexl82

Новичок
Сообщения
4
Репутация
1
Да, спасибо, все работает.
Особенно спасибо за второй вариант, что смотрели глубже.

Никак не идут мне в голову регулярные выражения, не въезжаю в них...
 
Верх