Schrift
[thread]5733[/thread]

Frage zu Backreferences (Seite 2)



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Crian
 2003-09-18 19:25
#53450 #53450
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ok, sie werden leer, nicht undef. Dieses Beispiel zeigt vielleicht, was ich meine:

Code: (dl )
1
2
3
4
5
6
7
8
9
use strict;

my $str1 = 'Dies ist ein Text';

$str1 =~ m/^.*(ist).*(Tex).*/;
print "1 : '$1', 2: '$2'\n";

$str1 =~ m/^.*(ein).*/;
print "1 : '$1', 2: '$2'\n";


Ausgabe:

Code: (dl )
1
2
1 : 'ist', 2: 'Tex'
1 : 'ein', 2: ''


Man muss also keine Angst haben, auf "ältere" Variablenbelegungen zu stoßen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Dubu
 2003-09-18 21:46
#53451 #53451
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Doch, muss man.
Sie werden nur dann geloescht, wenn die Regex als ganzes erfolgreich war!
Ansonsten behalten sie ihren Wert (s. pqs Beispiel).
Crian
 2003-09-21 23:29
#53452 #53452
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=Dubu,18.09.2003, 19:46]Doch, muss man.
Sie werden nur dann geloescht, wenn die Regex als ganzes erfolgreich war!
Ansonsten behalten sie ihren Wert (s. pqs Beispiel).[/quote]
ok, dann verbessere ich zu
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
use strict;

my $str1 = 'Dies ist ein Text';

if ($str1 =~ m/^.*(ist).*(Tex).*/) {
print "1 : '$1', 2: '$2'\n";
}

if ($str1 =~ m/^.*(ein).*/) {
print "1 : '$1', 2: '$2'\n";
}


besser?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Dubu
 2003-09-22 01:14
#53453 #53453
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Perfekt, genau so sollte man es machen. :)
Immer pruefen, ob ein Match erfolgreich war.
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2003-09-17 21:12.