Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7473[/thread]

reguläre Ausdrücke - Klammerinhalt nicht speichern



<< >> 7 Einträge, 1 Seite
Optalamia
 2005-11-15 15:45
#60173 #60173
User since
2003-10-01
50 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

wenn man einen regulären Ausdruck hat, wird der Inhalt der runden Klammern in $1 bis $9 gespeichert.
Es gibt auch eine Möglichkeit, Klammergruppen von dieser Speicherung auszuschließen.
Leider komme ich nicht mehr drauf, wie man das macht.
Ich wüßte auch nicht, was ich bei der Forumsuche für Begriffe eingeben soll.

Beispiel:
Code: (dl )
$text2 =~ s/(.*?) (.*?) (.*?) (.*)/$1 $2/ig;


Wie erreiche ich, daß die 2. und 3. Gruppe nicht gespeichert wird?
Also $2 der Letzten Klammergruppe entspricht?
esskar
 2005-11-15 15:51
#60174 #60174
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
lass doch die klammern weg, wenn du sie nicht brauchst!
AndreasM
 2005-11-15 16:00
#60175 #60175
User since
2005-10-08
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
Was Du brauchst sind "nicht einfangende Klömmern".

Die sehen so aus, wenn ich mich richtig erinnere :
(?:ABC)
trifft ABC, speichert das Ergebnis aber nicht.

Grüße
AndreasM
Optalamia
 2005-11-15 16:01
#60176 #60176
User since
2003-10-01
50 Artikel
BenutzerIn
[Homepage] [default_avatar]
> In diesem Beispiel ja, aber es gibt auch Fälle, wo man sie trotzdem braucht.
> Das Problem hatte ich schon, weiß aber nicht bei was / mehr warum.

... ach ja...

Zum Beispiel wenn Teil-Ausdrücke mit Fragezeichen versehen sind, weil sie nicht immer vorkommen.
z.B. (Inhalt1) (bla blub)? (Inhalt2)
Und bei langen Ausdrücken oder späteren Anpassungen ist das schöner, wenn die "bla blub"'s von $1 .. $9 ignoriert werden.\n\n

<!--EDIT|Optalamia|1132063721-->
Optalamia
 2005-11-15 16:11
#60177 #60177
User since
2003-10-01
50 Artikel
BenutzerIn
[Homepage] [default_avatar]
(?:.*) hat geklappt - Danke (-:

Aber auf den Begriff "nicht einfangende Klammern" wäre ich nie gekommen\n\n

<!--EDIT|Optalamia|1132064051-->
betterworld
 2005-11-15 16:27
#60178 #60178
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Mehr darueber kannst Du in perldoc perlre lesen
Crian
 2005-11-17 16:44
#60179 #60179
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Generell sollten alle Klammern, deren Inhalte einen nicht interessieren, als nicht fangende Klammern geschrieben werden.
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
<< >> 7 Einträge, 1 Seite



View all threads created 2005-11-15 15:45.