Forum Doku Wiki Blog

Forumsarchiv 2004, April
Regexps mit Variablen ($Variable =~ $Regexp)

archivierte Beiträge lesen

  1. (PERL) Regexps mit Variablen ($Variable =~ $Regexp) von DIO2000, 19. 04. 2004, 12:27

Regexps mit Variablen ($Variable =~ $Regexp)

Der folgende Beitrag wurde am 19. 04. 2004, 12:27 Uhr von DIO2000 veröffentlicht.

Moin moin,
ich habe mich im Forum und im gesamten I-net vergeblich umgesehen, jetzt versuche ich es mal auf diese Weise...

Ich habe folgendes Problem:
irgendwo glaube ich mal gelesen zu haben, das ich sowas in Perl machen kann:
$Regexp = "s/(abc)(xyz)/$2/g";
$String =~ $Regexp;

Wenn dies nicht der Fall ist, dann sind natürlich alle weiteren Erklärungen überflüssig, falls aber doch, dann kommen wir gleich zum nächsten Punkt.
Regexp Userabfrage und Anwendung
        print "Suchausdruck eingeben\t";
        $Regexp = <STDIN>;
        $Regexp =~ s/\n$//g;
        $Regexp =~ s/\n$//g;
        $Regexp =~ s/\\n/\n/g;
        $Regexp =~ s/\\t/\t/g;
        $Regexp =~ s/\\r/\r/g;
        $Regexp =~ s/\\f/\f/g;
        #$Regexp =~ s/\$/$/g;
        $File =~ s/[\r\n]//g;
        $Regexp = "$Regexp";
        $File =~ $Regexp;

Wenn ich also vom Benutzer einen Ausdruck abfrage, dann kommt PERL mit "s/(abc)(xyz)/$1/g" nicht klar. Denn $1 wird immer als String interpretiert, ich habe trotz aller möglicher suchen-ersetzen-Funktionen nicht geschafft das $1 als Variable erkannt wird. Auch der Anhang /e ist nutzlos. Ich habe auch schon die Version

$File =~ s/$Regexp_search/$Regexp_replace/g;

probiert. Ist aber genau der gleiche Scheiß. Falls jemand das Problem kennt, bin ich für Informationen sehr dankbar.

MFG DIO2000

Regexps mit Variablen ($Variable =~ $Regexp)

Der folgende Beitrag wurde am 19. 04. 2004, 12:52 Uhr von Stefan veröffentlicht.

Hi,

> Ich habe folgendes Problem:
> irgendwo glaube ich mal gelesen zu haben, das ich sowas in Perl machen kann:
> $Regexp = "s/(abc)(xyz)/$2/g";
> $String =~ $Regexp;

kann ich gar nicht so recht glauben.

$Regexp ist ja in deinem Fall ein String. Du kann einen String einem RegExp zuweisen indem du =~ verwendest aber danach sollte auch ein RegExp folgen also:

$String =~ s/(abc)(xyz)/$2/g;


Eine andere Möglichkeit ist mir nicht bekannt, aber ich hab auch PERL nicht ganz so ausgiebig studiert ;)


Gruss
Stefan

Regexps mit Variablen ($Variable =~ $Regexp)

Der folgende Beitrag wurde am 19. 04. 2004, 17:55 Uhr von DIO2000 veröffentlicht.

also s/$Regexp-search/$Regexp-replace/g funktioniert, aber ich kann halt keine Rückreferenzen angeben, wie oben schon erwähnt.

Aber diese Belegung funktioniert:
$Regexp-search = 'hallo';
$Regexp-replace = 'guten tag';

funktioniert auf jeden fall. Hmm ich bekomm einfach keine Infos im Netz. Wenn noch jemand irgendwas weiß, bitte posten .. ist für die Arbeit...

Vielen Dank im Vorraus

DIO2000

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4