Schrift
[thread]6144[/thread]

Regexp global schalter



<< >> 5 Einträge, 1 Seite
esskar
 2004-03-16 12:59
#81034 #81034
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
my $string = "http://www.ams.net";
$string =~ s!(.*)!<a href='$1'>$1</a>!g; # g für global
print $string;
^Z
<a href='http://www.ams.net'>http://www.ams.net</a><a href=''></a>


wieso wird 2 mal eresetzt? erklärungen sind gewünscht!

Code: (dl )
1
2
3
4
5
my $string = "http://www.ams.net";
$string =~ s!(.+)!<a href='$1'>$1</a>!g;
print $string;
^Z
<a href='http://www.ams.net'>http://www.ams.net</a>


funzt natürlich!
format_c
 2004-03-16 13:42
#81035 #81035
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Naja .* matcht any character null mal (jep) oder mehrmals (jep)
Mit den Zusicherungen ^ und $ funzt es natürlich auch korrekt.

Gruß ALex
kabel
 2004-03-16 13:44
#81036 #81036
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
erklärungsversuch:

.* matcht auf beliebig viele zeichen, d.h. insbesondere auch auf keines.
=> 1. ersetzung wird alles ersetzt, der zeiger steht hinter dem letzten zeichen, und $ würde jetzt auch passen
<a href='http://www.ams.net'>http://www.ams.net</a>
=> 2. ersetzung: es wird nichts eingefangen (wir sind ja am ende), also ist $1 == ' ', also:
<a href='http://www.ams.net'>http://www.ams.net</a><a href=''></a>

HTH
-- stefan
esskar
 2004-03-16 14:13
#81037 #81037
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ja... nach kurzer zeit wurde es mira auch klar...

danke....
pq
 2004-03-16 14:40
#81038 #81038
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
was aber ist der unterschied hier:
Code: (dl )
1
2
$string = "string\n";
$string =~ s!(.*)!print "($PREMATCH _ {$1} _ $POSTMATCH)";!ge;

bei 5.6.1 wird zwei mal ersetzt ('string', leerer string vor newline),
bei 5.8.2 dreimal ('string', leerer string vor newline, leerer string nach newline)
steht dazu irgendwas in perldelta?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 5 Einträge, 1 Seite



View all threads created 2004-03-16 12:59.