Regular expression

hiho experts at work,

hab hier ein kleines regex prob, fange damit gerade erst an

moechte aus einem string der aehnlich einer xml notation aufgebaut ist daten auslesen

my $var = „1991\n05\n“;

ich braeuchte jetzt ein reg ex das mir hier das jahr rausliest, naturlich spaeter auch month usw. wenn ich den regex fuer das jahr habe ist mir schon geholfen. kann mir jemand helfen?
habe einen ansatz, der bringt mich aber nicht weiter…
$var =~ /\b[0-9]+\b/;

bitte bitte helft mir

cu josh aka PunkRock

habe einen ansatz, der bringt mich aber nicht weiter…
$var =~ /\b[0-9]+\b/;

Richtige Richtung, ja. Hier ist ein korrektes Beispiel:

$var =~ /^([0-9]\*);
print $1 . "\n";

Mit der Klammerung merkst Du Dir das Jahr (in „$1“ – „$2“ wäre für die zweite Klammer usw.) und kannst es dann ausgeben oder sonstwie verwenden. Das „^“ steht für „Anfang des Strings“.

Schau mal unter http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm nach. Da findest Du alles, was Du brauchst. Aber ich musste auch ´ne Weile probieren, also nicht aufgeben, wenn´s nicht gleich klappt.

Kristian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

gerade habe ich selber eine loesung gefunden,

allerdings nicht so huebsch wie deine:

if (/\d*/) {
s///g ;
print $_;
}

borgstyle

  • assimiliert das

da werde ich dann wohl lieber die kurzversion nehmen.
vielen dank :wink:
josh

Hi Joshua,

der Tipp von Kristian mit der Klammerung ist schon okay. Ich wuerde u.U. noch folgendes probieren:

if ($suchstring =~
 m/
 ]+)\> # zuerst der Tag (Folge von ein oder
 # mehr 'Nicht-\>'-Zeichen) in -Klammern
 # tagname -\> $1

 ([^ $2
 # sollte alles bis zum schliessenden 
 # Tag finden ...

 # End-Tag -\> den Tagnamen, der in
 # Klammer 1 gefunden wurde,
 # eingeschlossen in '' und '\>'
 # /-Zeichen escaped...

 /x # extended Syntax -\> RegEx mit
 # Kommentar
 )
{
 ($tagname, $taginhalt) = ($1, $2);
 print "Tagname: - Wert: \n";
}

Dies laesst sich (leider) noch beliebig verkomplizieren (was ist, wenn der Taginhalt selbst noch spitze Klammern enthält oder wenn Einzelzeichen per \ escaped werden?..).

Immerhin laesst sich der Ansatz fuer beliebige ‚einfache‘ Tags der Form „Zeichenkette mit Taginhalt“ verwenden.

gruss
bernhard

xml?regex:frowning:XML::Simple)
hi,

nur falls mal jemand auf die idee kommt, ebenfalls eine xml struktur in perl einzulesen: es gibt da ein ganz ganz tolles modul das sich da XML::Simple nennt. damit muss man keine regex mehr koennen. aber dennoch bedanke ich mich bei den leuten hier im thread fuer ihre schnellen loesungen :wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]