Comment puis-je substituer des correspondances d'expressions rationnelles et mapper les substitutions dans Perl?

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

  •  05-07-2019
  •  | 
  •  

Question

I.e.:

echo H#97llo | MagicPerlCommand

Stdout:

Hallo

étaient MagicPerlCommand est quelque chose comme

perl -pnle "s/#(\d+)/chr(\1)/ge"

(mais cela ne fonctionne pas).

Était-ce utile?

La solution

Remplacez \ 1 par $ 1 dans votre MagicPerlCommand. Le style de référence arrière \ digit ne fonctionne pas lorsque l'expression de remplacement est évaluée (c'est-à-dire s /// e ).

Cela a fonctionné pour moi sous Windows et Linux.

Autres conseils

Conformément à la j_random_hacker , vous devez utiliser $ 1 plutôt que \ 1 .

Cela est dû au fait que l'utilisation du modificateur " / e " dans l'expression régulière signifie que la moitié droite est simplement une autre expression Perl normale, et non une substitution d'expression régulière. Comme il s’agit de Perl, vous devez utiliser la syntaxe de Perl pour la référence du crochet, et non la syntaxe habituelle des expressions rationnelles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top