3.4k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo Zusammen,

ich hab irgendwie heute ein Brett vorm Kopf, deswegen frag ich einfach mal nach.

Ich hab ein Zeichenkette $string.
und in dieser Zeichenkette ist eine weitere die durch z.B. xy auf beiden Seiten begrenzt ist.

Ich versuche jetzt diese Zeichenkette (ob mit oder ohne xy, ist egal... kann man ja nachher noch beschneiden) in einen neuen String zu bekommen.

also muesste der regulaere Ausdruck ja so aussehen:

/\sxy.+xy\s/

Aber wie komme ich von

$haystack = 'meinstring';
und dem regulaerem Ausdruck zu eine Variable mit nur dem Ausgeschnittenen Teil?

Danke schonmal.

mfg ducks

5 Antworten

0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Normalerweise wird der zu extrahierende Teil in runde Klammern eingeschlossen, die Werte stehen dann nach dem Anwenden der Regex in den Variablen $1, $2 usw....
0 Punkte
Beantwortet von
wenn du ungefaeht so meinst:

$text = "Mein NameistMoser.\n";
$text =~ /Name(.+)Moser">/;
print $1;


dann produziert das wie erwartet einen Error wegen einer nicht deklarierten Variable.

koenntest du vll. ein kleines Code Beispiel angeben?

sonst laesst sich aus deiner Aussage nicht allzuviel entnehmen.

mfg
0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Die $1, $2,... variablen sind nur gesetzt, wenn eine Übereinstimmung gefunden wurde, daß der Text in deinem Beispiel keine Übereinstimmung mit deiner Regex generiert sieht man auf den ersten Blick. Das "> ist wohl zu viel.

Siehe auch hier (englisch)
0 Punkte
Beantwortet von
dank dir supermax.. tatsaechlich da hat sich ein > zu viel verirrt..

danke fuer die klarsicht ^^

mfg
0 Punkte
Beantwortet von
mhh nochmal ausgefuehrt
aber auch
#!/usr/bin/perl

use warnings;

$text = "Mein NameistMoser.\n";
$text =~ /Name(.+)Moser"/;
print $1;


bringt nicht das gewuenschte Ergebnis.

ich werde mich nochmal durch den von dir geposteten Link wuehlen und mich wenn es nicht klappen sollte nochmal melden

mfg
...