/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
pattern match $1 $2 ...grr
Fra : F.Larsen


Dato : 27-05-01 11:08

Hej

Jeg scanner en web siden igennen og har fundet den linie jeg skal bruge, den ser
sådan ud:

<TD WIDTH=90>&nbsp;28 may 01</TD> <TD WIDTH=75>04:30</TD> <TD WIDTH=75>&nbsp;</TD>
<TD WIDTH=85>DK 546 </TD> <TD WIDTH=160>Rhodos</TD> <TD WIDTH=95>&nbsp;Bording

Jeg vil godt udtrække de forskellige info "28 may 01" + "04:30" + "DK 546" +
"Rhodos"+"Bording" som en "one-liner", men jeg ikke rigtigt få det til at virke
f.eks.

if ($strLine =~ /(28 may 01).(DK 546)/i)
{
print "$1 + $2";
}

problemet er at den aldrig matcher ... hvad gør jeg galt .. ?

--
Flemming

Q2 3D Benchmarks: http://www.ClanWorld.dk/Q2Bench/
Støjdæmp din PC ..: http://hjem.get2net.dk/Quake2/LowNoise/



 
 
Lars Kim Lund (27-05-2001)
Kommentar
Fra : Lars Kim Lund


Dato : 27-05-01 11:17

Hej "F.Larsen" <N0Spam@usa.net>

>if ($strLine =~ /(28 may 01).(DK 546)/i)

Du skal skrive .*? istedet for . for at matche et-eller-andet (og
mindst muligt) mellem de to paranteser.

--
Lars Kim Lund
http://www.net-faq.dk/

Allan Olesen (27-05-2001)
Kommentar
Fra : Allan Olesen


Dato : 27-05-01 12:10

Lars Kim Lund <larskim@mail.com> wrote:

>Du skal skrive .*? istedet for .

Både '*' og '?' ?


--
Allan Olesen, Lunderskov
Hvorfor er det kun Nej-sigerne, der må køre 55 i byen?

Lars Balker Rasmusse~ (27-05-2001)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 27-05-01 12:19

Allan Olesen <aolesen@post3.tele.dk> writes:
> Lars Kim Lund <larskim@mail.com> wrote:
>
> >Du skal skrive .*? istedet for .
>
> Både '*' og '?' ?

..* = greedy
..*? = non-greedy

forskellen illustreres bedst med et eksempel:

$str = "{abc} {def}";
$str =~ /({.*})/; # $1 indeholder "abc} {def"
$str =~ /({.*?})/; # $1 indeholder "abc"

--
Lars Balker Rasmussen "Woo hoo!?"

Allan Olesen (27-05-2001)
Kommentar
Fra : Allan Olesen


Dato : 27-05-01 19:41

Lars Balker Rasmussen <lars@balker.org> wrote:

>$str =~ /({.*?})/; # $1 indeholder "abc"

Åh. Jeg troede, at .* opførte sig sådan.


--
Allan Olesen, Lunderskov
Hvorfor er det kun Nej-sigerne, der må køre 55 i byen?

Lars Balker Rasmusse~ (27-05-2001)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 27-05-01 11:47

"F.Larsen" <N0Spam@usa.net> writes:
> Jeg scanner en web siden igennen og har fundet den linie jeg skal bruge, den ser
> sådan ud:
>
> <TD WIDTH=90>&nbsp;28 may 01</TD> <TD WIDTH=75>04:30</TD> <TD WIDTH=75>&nbsp;</TD>
> <TD WIDTH=85>DK 546 </TD> <TD WIDTH=160>Rhodos</TD> <TD WIDTH=95>&nbsp;Bording
>
> Jeg vil godt udtrække de forskellige info "28 may 01" + "04:30" + "DK 546" +
> "Rhodos"+"Bording" som en "one-liner", men jeg ikke rigtigt få det til at virke

Det er ikke helt nok oplysninger for at kunne lave en løsning til dig.
Hvad præcis har du i $strLine?

Men måske det her kan hjælpe lidt:

$strLine =~ s/&nbsp;//g;
@data = split m{</?TD(?: WIDTH=\d+)?>}, $strLine;
print join "\n", @data;
--
Lars Balker Rasmussen "Woo hoo!?"

F.Larsen (27-05-2001)
Kommentar
Fra : F.Larsen


Dato : 27-05-01 20:01

Tak for svarene - det var .* der skulle til for at få hul igennem.

Nedenstående bruger jeg til at sende mig selv en sms besked når jeg er på ferie -
på den måde har jeg en ide om flyet er forsinket når jeg skal hjem... ;=)

Kunne godt bruge en daglig vejrudsigt .... men mon ikke man kan finde en sms
service til det ... ;=)

--
Flemming



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste