• [^] # Re: Faire l'inverse

    Posté par . En réponse au message expression rationnelle particuliere. Évalué à 1.

    Bonne idée.

    En gros le principe est de construire deux expressions régulières :
    une EXPR1 qui matche les exceptions et une EXPR2 qui matche le cas général.

    Ici ca donnerait : EXPR1: \\line\|\\par
    et EXPR2 : \\[a-zA-Z]*

    et ensuite on fait une opération de substitution (avec sed ou vi)
    s/ \( EXPR1\) \| EXPR2 / 1円/g (j'ai rajouté des espaces pour la lisibilité)

    par ex avec sed :

    sed 's/\(\\line\|\\par\)\|\\[a-zA-Z]*/1円/g'

    Si le texte contient \toto, ça matche EXPR2 et c'est supprimé (car 1円 ne 'contient' alors rien) et si le texte contient \line (ou \par) ça matche EXPR1 et c'est remplacé par lui même (donc conservé).

    En fait \line matche aussi EXPR2, mais sed prend le premier 'match' possible. Par contre ça marche plus si on intervertit EXPR1 et EXPR2 :
    sed 's/\\[a-zA-Z]*\|\(\\line\|\\par\)/1円/g'