Thread Regex: Match: Variable für $* setzen (3 answers)
Opened by supersucker at 2007-01-24 10:56

sid burn
 2007-01-24 14:26
#73551 #73551
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Naja,
dass was du eigentlich möchtest sind benannte Klammerausdrücke.
Sprich du willst den Wert von Klammern nicht in $1, $2 etc. speichern, sondern in einer benannten Variablen. Sowas lässt sich auch mit Perl erledigen.

Code: (dl )
1
2
3
4
5
6
7
my $string = 'foobarfoo';
{
my $hit;
my $regex = qr/(foo)(bar)(?{ $hit = $^N })(foo)/;

print $hit if $string =~ m/$regex/;
}


Du musst dir nur zur Nutze machen das du mit (?{ ... }) Perl Code in einer Regex ausführen kannst. Weiterhin enthält die Spezialvariable $^N immer den Wert der zuletzt schließenden Klammer.

Die Klammer der du also einen Direkten Variablennamen zuweisen möchtest, dahinter machst du dann einfach das obrige Konstrukt.

Nun kannst du deine Regex verändern wie du Lustig bist. Hauptsache $hit wird gesetzt auf das was du haben möchtest.\n\n

<!--EDIT|sid burn|1169641667-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Regex: Match: Variable für $* setzen