/ 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
Resultat af regular expression
Fra : Martin Schmidt


Dato : 17-05-05 18:17

Hej,

Jeg ville jo tro at outputtet af følgende kode ville være:

$1 = 123
$2 = 456

--------------
use strict;
use warnings;

my $test="123abc456";
if ($test =~ m/\d*aBc\d*/mi)
{
print "\$1 = $1\n";
print "\$2 = $2\n";
}

1;
--------------

I stedet får jeg:

perl -w test.pl
Use of uninitialized value in concatenation (.) or string at test.pl line 7.
$1 =
Use of uninitialized value in concatenation (.) or string at test.pl line 8.
$2 =

Hvad er det jeg ikke forstår?

Jeg benytter:
perl, v5.8.6 built for MSWin32-x86-multi-thread

M.v.h.
Martin.



 
 
Peter Brodersen (17-05-2005)
Kommentar
Fra : Peter Brodersen


Dato : 17-05-05 18:58

On Tue, 17 May 2005 19:17:01 +0200, "Martin Schmidt"
<martinjs-ingen-spam@bigfoot.com> wrote:

>if ($test =~ m/\d*aBc\d*/mi)

Du har ingen capturing parenteser her. Prøv med:

if ($test =~ m/(\d*)aBc(\d*)/mi)

--
- Peter Brodersen

Martin Schmidt (17-05-2005)
Kommentar
Fra : Martin Schmidt


Dato : 17-05-05 19:37

"Peter Brodersen" <usenet2005@ter.dk> wrote in message
news:d6dbbp$42k$2@news.klen.dk...
> Du har ingen capturing parenteser her. Prøv med:

Dohh... ja selvfølgelig.

Tak.

M.v.h.
Martin.



Jesper Nøhr (18-05-2005)
Kommentar
Fra : Jesper Nøhr


Dato : 18-05-05 13:36

Martin Schmidt wrote:
> Hej,
>
> Jeg ville jo tro at outputtet af følgende kode ville være:
>
> $1 = 123
> $2 = 456
>
> --------------
> use strict;
> use warnings;
>
> my $test="123abc456";
> if ($test =~ m/\d*aBc\d*/mi)
> {
> print "\$1 = $1\n";
> print "\$2 = $2\n";
> }
>
> 1;
> --------------
>
> I stedet får jeg:
>
> perl -w test.pl
> Use of uninitialized value in concatenation (.) or string at test.pl line 7.
> $1 =
> Use of uninitialized value in concatenation (.) or string at test.pl line 8.
> $2 =
>
> Hvad er det jeg ikke forstår?

For at extracte resultater fra regex'es skal du indramme dem med
paranteser. E.g.

$_="123abc456";
if (m/(\d+)aBc(\d+)/mi) {
print "\$1 = $1\n";
print "\$2 = $2\n";
}

...burde give dig det resultat du leder efter.

> Jeg benytter:
> perl, v5.8.6 built for MSWin32-x86-multi-thread
>
> M.v.h.
> Martin.
>
>

Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407841
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste