Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
5w155
Piegowaty Guziec
Posty: 26 Rejestracja: 11 sty 2009, 13:12
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86_64
Post
autor: 5w155 » 14 sie 2010, 11:18
Witam,
Potrzebuję napisać wyrażenie regularne, które "wyciągnie" z tego tekstu:
Kod: Zaznacz cały
<div id="small-list-foto" class="maxSzerokosc">
<a rel="zdjecie:0" href="/ogloszenie/zdjecie/1932088_1.html">
<img alt="" src="http://d.ale.gratka.pl/g2/o/16/7d/a9/1932088_1_f100_m.jpeg">
</a>
<a rel="zdjecie:1" href="/ogloszenie/zdjecie/1932088_2.html">
<img alt="" src="http://d.ale.gratka.pl/g2/o/16/7d/a9/1932088_2_fad5_m.jpeg">
</a>
<a rel="zdjecie:2" href="/ogloszenie/zdjecie/1932088_3.html">
<img alt="" src="http://d.ale.gratka.pl/g2/o/16/7d/a9/1932088_3_5b0d_m.jpeg">
</a>
<a rel="zdjecie:3" href="/ogloszenie/zdjecie/1932088_4.html">
<img alt="" src="http://d.ale.gratka.pl/g2/o/16/7d/a9/1932088_4_c859_m.jpeg">
</a>
</div>
wszystkie ciągi znaków z sekcji "href".
Pytanie dodatkowe: czemu TO nie działa? :
/<div.*?id="small-list-foto".*?>.*?href="(.*?).html".*?>.*?<\/div>/i
borzole
Serdeczny Borsuk
Posty: 127 Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:
Post
autor: borzole » 14 sie 2010, 14:39
Nie napisałeś w jakim języku chcesz to wyciągnąć. W którym języku stawia się /i na końcu ?
beluosus
Zakręcona Traszka
Posty: 695 Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:
Post
autor: beluosus » 14 sie 2010, 15:49
Twój wzór jest bezsensu, bo po pierwsze regex zazwyczaj czyta po jednej linii tekstu, po drugie jakbyś chciał traktować wszystkie linie jako jedną (/m) to mógłbyś wyłuskać z niej tylko jeden link.
Kod: Zaznacz cały
#!/usr/bin/perl
use strict;
my $in = 0;
while (<>)
{
if ($in)
{
last if (/<\/div>/i);
print $1 . "\n" if (/.*?href="(.*?).html".*?>.*?/i);
}
$in = 1 if (/<div.*?id="small-list-foto".*?>/i);
}
Output:
Kod: Zaznacz cały
/ogloszenie/zdjecie/1932088_1
/ogloszenie/zdjecie/1932088_2
/ogloszenie/zdjecie/1932088_3
/ogloszenie/zdjecie/1932088_4
borzole pisze: W którym języku stawia się /i na końcu ?
Powiedz lepiej w którym się nie stawia.
dam
Sędziwy Jeż
Posty: 40 Rejestracja: 21 maja 2008, 20:43
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Post
autor: dam » 14 sie 2010, 17:28
borzole pisze: W którym języku stawia się /i na końcu ?
Modyfikator /i "wyłącza" rozróżnianie wielkości znaków.
W PHP można zrobić tak:
Kod: Zaznacz cały
<?php
$html = '<div id="small-list-foto" class="maxSzerokosc">
<a rel="zdjecie:0" href="/ogloszenie/zdjecie/1932088_1.html">
<img alt="" src="http://d.ale.gratka.pl/g2/o/16/7d/a9/1932088_1_f100_m.jpeg">
</a>
<a rel="zdjecie:1" href="/ogloszenie/zdjecie/1932088_2.html">
<img alt="" src="http://d.ale.gratka.pl/g2/o/16/7d/a9/1932088_2_fad5_m.jpeg">
</a>
<a rel="zdjecie:2" href="/ogloszenie/zdjecie/1932088_3.html">
<img alt="" src="http://d.ale.gratka.pl/g2/o/16/7d/a9/1932088_3_5b0d_m.jpeg">
</a>
<a rel="zdjecie:3" href="/ogloszenie/zdjecie/1932088_4.html">
<img alt="" src="http://d.ale.gratka.pl/g2/o/16/7d/a9/1932088_4_c859_m.jpeg">
</a>
</div>';
preg_match_all('/<a.*?rel="zdjecie:\d".*?href="(.+)\.html".*?>/i', $html, $array);
print_r($array[1]);
?>
Co zwróci
Kod: Zaznacz cały
Array
(
[0] => /ogloszenie/zdjecie/1932088_1
[1] => /ogloszenie/zdjecie/1932088_2
[2] => /ogloszenie/zdjecie/1932088_3
[3] => /ogloszenie/zdjecie/1932088_4
)
borzole
Serdeczny Borsuk
Posty: 127 Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:
Post
autor: borzole » 14 sie 2010, 18:40
@beluosus
np. w sed lub python. Widzę, że w Perl/Ruby jest, których nie znam wcale.
5w155
Piegowaty Guziec
Posty: 26 Rejestracja: 11 sty 2009, 13:12
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86_64
Post
autor: 5w155 » 14 sie 2010, 23:20
Chodziło mi o PHP i całkowicie mnie usatysfakcjonowaliście
Dzięki!
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 25 gości