Schrift
[thread]10689[/thread]

RegEx in Variable

Tags: Ähnliche Threads

Leser: 4


<< >> 6 Einträge, 1 Seite
SaschaTen
 2007-10-30 14:25
#101558 #101558
User since
2007-10-15
28 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

ich benoetige eine variable RegEx in ener Variable...
ich bekomme einen String uebergeben, diesen muss ich zerlegen um das ganze in ne RRD zu speichern.
Es gibt am Anfang eine "Befehlszahl" welche mir verraet was ich mit dem String machen soll, in der Mitte einen Pfad zur RRD und am Ende 1-4 mal die Kompination aus Zeitstempel:Wert.
Mit splitt moechte ich das ganze nicht loesen... dachte ehr ich ermittle die Anzahl von Leerzeichen und setzte mit dann eine RegEx in ne Variable zusammen...
Koennt ihr mit helfen? Habe ich nen Denkfehler oder bin ich komplett auf dem Holzweg?

P.S. bin Neuling zum Thema RegEx

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#/usr/bin/perl

use strict;

my    $string = "0815 /irgend/ein/lustiger/pfad/zu-einer.rrd 1193741121:0 1193741121:1";
my    $count = 0;
      $count = $string =~ tr/ //;
my    $regex = "([0-9]{1,3})\ ([0-9A-Za-z\/\.\-]*)";
      for(my $i = 2; $i<$count; $i++)
      {
        $regex .="\ ([0-9\:]*)";
      }
      $regex .="*/";
      print $regex."\n";
      $string =~m/($regex)/;
      print "count= ".$count."|".$1."|".$2."|".$3."|".$4."|".$5."|".$6."\n";
-----------
Wer Rechstschreibfehler findet, darf diese behalten und bei Ebay versteigern!!!
-----------
Nidar mied där Rächtschraibunk!!!
Linuxer
 2007-10-30 14:40
#101559 #101559
User since
2006-01-27
3881 Artikel
HausmeisterIn

user image
Warum kein performanteres und saubereres split()?

Code (perl): (dl )
1
2
# Leerzeichen ist nur Trennzeichen und taucht nicht in den Werten auf
my ( $befehlszahl, $pfad, @wertpaare ) = split( /[ ]+/, $string );
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!
nepos
 2007-10-30 14:48
#101561 #101561
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich glaube, da reicht sogar
Code (perl): (dl )
my ( $befehlszahl, $pfad, @wertpaare ) = split(' ', $string);
da Perl das mit einem oder mehreren Leerzeichen selber erledigt.
SaschaTen
 2007-10-30 14:49
#101562 #101562
User since
2007-10-15
28 Artikel
BenutzerIn
[default_avatar]
danke... geht super kann man nicht genuchmeckern und einfacher als es bisher gelöst ist :)

dachte RegEx ist schneller als split
-----------
Wer Rechstschreibfehler findet, darf diese behalten und bei Ebay versteigern!!!
-----------
Nidar mied där Rächtschraibunk!!!
Linuxer
 2007-10-30 15:19
#101563 #101563
User since
2006-01-27
3881 Artikel
HausmeisterIn

user image
nepos+2007-10-30 13:48:54--
Ich glaube, da reicht sogar
Code (perl): (dl )
my ( $befehlszahl, $pfad, @wertpaare ) = split(' ', $string);
da Perl das mit einem oder mehreren Leerzeichen selber erledigt.


Hm, OK.
Ich habe mir mittlerweile angewöhnt, das split-Pattern mit // anzugeben, da braucht es den Quantifier. Nachdem ich in der split perldoc nachgelesen habe, bin ich überwältigt, wieviel Magic in ' ' steckt ;o))
Werd versuchen, mir das zu merken...

@SaschaTen
Regex ist in der Regel für sowas langsamer als split(), gerade wenn der Regex komplexer wird. Auch wenn split() mit einem Pattern gefüttert wird.
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!
nepos
 2007-10-30 15:43
#101566 #101566
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
@Linuxer: Bin darauf auch erst letztens gestoßen worden ;) Vorher hätte ich das ähnlich wie du gemacht :)
<< >> 6 Einträge, 1 Seite



View all threads created 2007-10-30 14:25.