Remplacer une expression régulière par une autre

Remplacer une expression régulière par une autre - Perl - Programmation

Marsh Posté le 13-01-2009 à 10:51:38    

Bonjour à tous
je cherche a remplacer dans un fichier une expression régulière par une autre  
je sais les suprimer avec un sed mais pas les remplacer  
 
en gros j'ai une expression reguliere :
[+-=_] ( .* ) [+-=_] et il faut que je retire les parentheses, en fait il faut que je retire la premiere occurence de la parenthese ouvrante et la derniere de la parenthese fermante.
avant la parenthese j'ai soit un + un - un = ou un espace et après la parenthese fermante j'ai la meme chose
 
j'en ai besoin pour comparer du code en gros si on ecri a=(b) ou a=b c'est la meme chose ...
il ne me reste plus que ce probleme a gérer, j'ai deja gerer,  
j'ai reformater mes deux fichiers a comparer avec la commande  perl -p -e 's/\n/ /g'  ( suppression des retour a la ligne ) j'ai egalement virer tous les commentaires avec un sed
mais la je bloque et je n'y connait rien en perl.
 
merci d'avance

Reply

Marsh Posté le 13-01-2009 à 10:51:38   

Reply

Marsh Posté le 13-01-2009 à 11:14:53    

dans chaine j'ai a=(b)
j'ai essaye cat chaine | perl -p -e 's/[+-=]\([*^\)]\)[+-=]/$1$2$3/g'
sans succes

Reply

Marsh Posté le 13-01-2009 à 13:42:44    

pour stocker les occurences trouvées dans les variables, il faut les protéger avec des parenthèses
du coup ton truc se transforme en :

Code :
  1. echo "a=(b)" | perl -pe 's/(\()(.+)(\))/$2/;'

Reply

Marsh Posté le 13-01-2009 à 15:10:36    

d'accord merci je crois avoir compris j'essaie des commandes et je vous tiens au courant

Reply

Marsh Posté le 13-01-2009 à 17:07:33    

merci  
 

Code :
  1. perl -pe 's/([+-= ])(\()([0-9a-zA-Z]+)(\))([+-= ])/$1$3$5/'


semble marcher du moins sur un exemple simple cela fait ce que je veux
 :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed