Wie kann ich regexp Matches ersetzen und die Ersetzungen in Perl Karte?
-
05-07-2019 - |
Frage
D.h.:.
echo H#97llo | MagicPerlCommand
Stdout:
Hallo
waren MagicPerlCommand ist so etwas wie
perl -pnle "s/#(\d+)/chr(\1)/ge"
(aber das funktioniert nicht).
Lösung
Ändern \1
in Ihrem MagicPerlCommand $1
. Der \digit
Rückreferenzierung Stil funktioniert nicht t, wenn der Ersatz Ausdruck ausgewertet wird (das heißt s///e
).
Das ist für mich unter Windows und Linux gearbeitet.
Andere Tipps
Gemäß der j_random_hacker
Antwort, müssen Sie eher verwenden $1
als \1
.
Dies liegt daran, mit dem ‚/e
‘ Modifikator auf die regex bedeutet, dass die rechte Hälfte ist nur ein weiterer normaler Perl Ausdruck, und nicht eine regex Substitution. Da es Perl ist, haben Sie die Perl-Syntax für die Halterung Referenz und nicht die übliche regex Syntax verwenden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow