Thread Teilstring zurückgeben (9 answers)
Opened by maxritti at 2012-04-21 10:33

Linuxer
 2012-04-23 16:19
#157779 #157779
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

2012-04-23T11:47:28 maxritti
Hi,
tjo, warum mit Perl?
Ich fange damit halt gerade ein wenig an und dachte, dass das gut passt zu dem was ich brauche.
Substr hatte ich auch schon unter der Tastatur, habs dann aber vertagt.

Wie immer gibts ja mehrere Wege zum Ziel :)


ich fragte nur nach "Warum Regex?" nicht "Warum Perl?" und aus Neugierde warum Du Dich auf Regex festlegst.
Zum Üben und Ausprobieren ist das Beispiel schon verwendbar.
Im produktiven Einsatz würde ich es anders lösen (wahrscheinlich mit einer split Lösung oder evtl. gar mit einem passenden Modul).

In meinem Fall ist es ausgeschlossen, dass P= und I= vertauscht sind.
[/quote]
OK, ich wollte nur der Vollständigkeit halber darauf hinweisen.

2012-04-23T11:47:28 maxritti
Allerdings das mit dem Teilstrings, die da auftauchen können (also zwischen P= und I=) verstehe ich nicht ganz.

Code: (dl )
if( $str=~/P=(.+?),I=(.+?)$/ ) {


Bedeutet (.+?) nicht, dass egal was für Zeichen auftauchen, bis zu ,I= gelesen wird?
darunter würde dann doch auch ,O= fallen.


Da hatte ich einen Denkfehler. Guifreund hat ja auch schon drauf hingewiesen.
Das erste (.+?) sammelt alles bis zum (ersten) Teilstring ,I= ein, auch andere Zuweisungen.

.+ ist gierig und .+? ist nicht gierig.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
my $str = "text   "; # text mit 3 Leerzeichen am Ende

# gierig schnappt sich auch die Whitespaces am Ende
if ( $str =~ m/(.+)\s*$/ ) {
  print ">$1<\n";
}
# nicht gierig schnappt sich die Whitespaces am Ende nicht
if ( $str =~ m/(.+?)\s*$/ ) {
  print ">$1<\n";
}

Last edited: 2012-04-24 12:22:22 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Teilstring zurückgeben