Como posso substituir partidas expressões regulares e mapear as substituições em Perl?
-
05-07-2019 - |
Pergunta
ou seja:.
echo H#97llo | MagicPerlCommand
Stdout:
Hallo
foram MagicPerlCommand é algo como
perl -pnle "s/#(\d+)/chr(\1)/ge"
(mas que não funciona).
Solução
Alterar \1
para $1
em sua MagicPerlCommand. O estilo \digit
backreference não t trabalho quando a expressão de substituição é avaliado (ou seja s///e
).
Isso funcionou para mim no Windows e Linux.
Outras dicas
De acordo com a resposta j_random_hacker
, você deve usar $1
em vez de \1
.
Isso ocorre porque usando o aos meios regex a metade da direita é apenas mais uma expressão Perl normal, e não uma substituição regex '/e
' modificador. Desde a sua Perl, você tem que usar a sintaxe do Perl para a referência de suporte, e não a sintaxe regex habitual.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow