(Courriels de diversion: <plastifierai@oblige-grapheme.com> <redoraient@affacturer-relogerez.com> <frise@taira-placa.com> <bas-fonds@repu-graisserez.com> <rattacheriez@ciselent-allegeraient.com> <labouriez@accomplissent-suivantes.com> <refroidisse@catalyserait-attardez.com> <ostracismes@defectueuse-reinstallee.com> <curiste@approximation-inaugurions.com> <charcuterait@encollent-baba.com> )
Bonjour, Je suis en train de reformater des fichier html, et je me pose une question qui ne trouve pas de réponse... Auriez vous une idée pour un regexp s'appliquant de manière multiligne sous vi ? Mes exemples : 1. Insertion de caractères multi ligne <i>a b c d</i> doit devenir: <i>a<br> b<br> c<br> d</i><br><br> c'est à dire entre les bornes italiques, on rajoute des saut de ligne, et deux à la fin des borness 2. Fusion de lignes 001.1 aaa jj: kkk lll 004.6 bbb ccc dd 001.2 eee fff 002.5 ggg doit devenir: 001.1 aaa (jjj: kkk,lll) 004.6 bbb (ccc) (dd) 001.2 eee (fff) 002.5 ggg c'est à dire si ça commence pas par au moins 3 nombres, on fusionne le tout en mettant entre parenthèse chaque ligne, sauf s'il y a deux points, dans quel cas on fait une liste. Mon idée actuelle: pour 1: un truc genre :%s/<i>.*\n*.*<\/i>/&<br>/g mais qui est grossièrement faut En perl le code suivant fonctionne: use strict; undef $/; my $html = <>; while ($html =~ m{<i>.*?</i>}gsi) { my $italic = $&; $italic=~ s{\n}{<br>\n}g; $italic=~ s{<\/i>}{<\/i><br><br>}; print $italic; } exit(0); pour 2: utiliser \l pour les lettres minuscules (équivalent à [a-z]) et \d pour les chiffres (équivalent à [0-9]) mais pour le multi ligne, je suis pommé de chez pommé. Je vais sinon essayer de faire ça avec autre chose (perl,c,sed/awk...) ce qui sera moins pire mais je me pose quand même la question : vim est-il capable de ça ? Une brève recherche sur google et le help regexp de vim me laissent supposer que non. Vous vous demandez sans doute pourquoi diable en vim lorsque perl marche ? Mon idée, surtout pour le regexp 2, c'est de le mapper à par ex F1 pour traiter la ligne actuellement sous le curseur, jusqu'à occurence des prochains chiffres. Pour le regexp 1, idem ce serait mappé à une touche et fonctionnel dans le bloc <i> </i> dans lequel se trouve actuellement le curseur. Enfin, bon, tout exemple fonctionnel est le bienvenu ! Bonne prise de tête :-) -- *@externe.net ![guylhem@oeil.qc.ca->@metalab.unc.edu->@ibiblio.org->@7un.org]http://externe.net/geekcode http://externe.net/photos http://externe.net/zaurus GPG: 92EB37C1 DD11C9C9 20519D01 E8FA1B11 42975AF7 http://externe.net/pubkey
Attachment:
pgp00014.pgp
Description: PGP signature
-------------------------------------------------------------------- Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>