Здравствуйте,
не пойму никак как можно снять значение всех title="(...)" из переменной с html кодом?есть переменная $aa. в ней содержиться такой хтмл код. допустим:
Код (html): скопировать код в буфер обмена
<td title="i20-56"><a href="/link">что еще...<td title
="текст"><a
href="/link2">.... и дальше в том же духе
и мне нужно узнать все значения title и href.
попробовал так
Код (perl): скопировать код в буфер обмена
while($aaa =~ m/title=\"(.+?)\".+?href=\".+?/gsc) {
print "$1 - $2\n";
}
а он мне выдал первое значение title и последнее href...
и зациклился... :(
i20-56 - /link100
i20-56 - /link100
i20-56 - /link100
...
что я неправильно делаю?
$qwe=qq(<td title="i20-56"><a href="/link">что еще...<td title="текст"><a href="/link2">);
print $_."\n" for $qwe=~/(title|href)=\"(.+?)\"/g;
>$qwe=qq(<td title="i20-56"><a href="/link">что еще...<td title="текст"><a href="/link2">);
>print $_."\n" for $qwe=~/(title|href)=\"(.+?)\"/g;
спасибо огромное. :)
>>$qwe=qq(<td title="i20-56"><a href="/link">что еще...<td title="текст"><a href="/link2">);
>>print $_."\n" for $qwe=~/(title|href)=\"(.+?)\"/g;
>
>
>спасибо огромное. :)
все. значения я снял вот таким вот образом:
for($response->content =~ m/title=\"([^"]{11,}?)\".+?href=\".+?id=(\d+:\d+)/gsc) {
chomp;
print "$_\n";
}только почему-то в переменной $1 и $2 постоянно одно значение - первое попавшееся. почему так может быть?
Это просто.
$perl -e '
$qwe="abcd";
print $1."\n" for $qwe=~/(\w)/g;
'
d
d
d
d$qwe=~/(\w)/g вычисляется не постепенно, а сразу, то есть прежде чем начнется выполнение
цикла, $1 уже побывает всеми значениями, которые совпадут с регекспом, и поэтому будет в значении последней найденной подстроки.
>$qwe=~/(\w)/g вычисляется не постепенно, а сразу, то есть прежде чем начнется выполнение
>
>цикла, $1 уже побывает всеми значениями, которые совпадут с регекспом, и поэтому
>будет в значении последней найденной подстроки.и как поступают в таких случаях? только $_ ?
>и как поступают в таких случаях? только $_ ?Можно так, можно еще сделать строке split, чтоб в каждой стоке находилось не более одного совпадения поиска (если возможно) и сохранить ее в массиве, а потом
уже внутри цикла сравнивать по регекспу , в этом случае $1,$2 ... , будут корректными.
спасибо за ответы...