J'ai du mal à insérer une nouvelle ligne avant une chaîne assortie qui consiste en une période suivie de 2 ou 3 caractères (alphanumériques) et se terminant par une autre période. Si possible, cela doit être une seule instruction qui agit sur un fichier entier.Perl regex pour insérer globalement newline avant le match pattern
Quelque chose comme (?):
$contents =~ s/\.{2,3}\./\n\.<what goes here?>\./g;
Plus précisément, je traite un fichier de nombreux enregistrements de catalogue dans un processus en 2 étapes. Étape 1: suppression de tous les retours chariot du fichier. Étape 2: recherche de chaînes de texte telles que .AUTH. et .RE. et même .856. et faire de chacun d'eux le début d'une nouvelle ligne. Je peux le faire avec une longue série de substitutions spécifiques,
$contents=~s/\.RE\./\n\.RE\./g;
$contents=~s/\.AUTH\./\n\.AUTH\./g;
$contents=~s/\.TITL\./\n\.TITL\./g;
Mais je crois comprendre que je peux aussi le faire plus efficacement avec une seule instruction (en utilisant regex variables intégrées?)
Merci,
Thom
Les caractères '.' ne doivent pas être échappé dans les chaînes de remplacement. –