Richard Voß: RegExp: Zahl x durch x Unterstreichungszeichen ersetzen

Beitrag lesen

Hi

$text=~s/_(\d+)_/_ x \1/e;

Mein Kommentar zu Deiner Erwähnung von \1 war nicht ganz zufällig gewählt. Überlege Dir, was ich damit meine, und warum \1 hier falsch ist.

ok mit $1 funktioniert es. Das heisst das /e aus dem RegExp rausspringt
um den Code auszuführen und dann ja das Erkannte in $1 gespeicht ist.

Nein und Ja, RTFM. perlop und perlre.

s/PAT/REPL/

PAT ist ein regulärer Ausdruck. REPL nicht. REPL ist ein string, der den Interpolationsregeln von qq// unterworfen ist oder aber ein Perl-Ausdruck, der den Regeln der Perl-Syntax unterworfen ist, nämlich wenn /e verwendet wird.

Aber was ist ausserhalb des RegEx in \1 gespeichert ? Warum ist dass denn dann
kein Fehler sondern gibt mir da ne Endlosschleife?

siehe perlre zu \1. Du willst \1 nicht.