Como posso substituir partidas expressões regulares e mapear as substituições em Perl?

StackOverflow https://stackoverflow.com/questions/420410

  •  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).

Foi útil?

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
scroll top