Come posso sostituire le partite regexp e mappare le sostituzioni in Perl?
-
05-07-2019 - |
Domanda
cioè:.
echo H#97llo | MagicPerlCommand
Stdout:
Hallo
dove MagicPerlCommand è qualcosa di simile
perl -pnle "s/#(\d+)/chr(\1)/ge"
(ma non funziona).
Soluzione
Cambia \ 1
in $ 1
nel tuo MagicPerlCommand. Lo stile di backback \ digit
non funziona quando viene valutata l'espressione di sostituzione (ovvero s /// e
).
Ha funzionato per me su Windows e Linux.
Altri suggerimenti
Come da j_random_hacker
, devi usare $ 1
anziché \ 1
.
Questo perché usare il modificatore ' / e
' nella regex significa che la metà della mano destra è solo un'altra espressione Perl normale, e non una sostituzione regex. Dato che è Perl, devi usare la sintassi di Perl come riferimento per la parentesi, e non la solita sintassi della regex.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow