[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: perl regexp



On 3/7/06, David Prévot <davidp@altern.org> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Heyberger Ludovic a écrit :
> > Salut a tous,
> >
> > je sais plus vers qui me tourner alors je vais vous exposer mon probleme :-)
> >
> > je cherche a faire une regexp qui ferait la chose suivante:
> >
> > remplacer dans une chaine de character, TOUT ce qui n'est PAS:
> >  - un mot en majuscule :  \b[A-Z]*\b
> >  - un charactere entre simple quotes:   \b\'.\'\b
> >
> > j'arrive a faire une regexp qui me remplace exactement ce les trucs
> > que je veux pas, mais pas le contraire :-s
> >
> > please help
> >
> > c'est urgent :-s
> >
> > merci d'avance
> >
> > --
> > 105 116 039 115 032 110 111 116 032 097
> > 032 098 117 103 044 032 105 116 039 115
> > 032 097 032 102 101 097 116 117 114 101
> >
> >
>
> $chaine=~s/(.*?)('.'|[A-Z]*)(.*?)/$2/g;
>
> (si j'ai bien compris ta question, ce qui n'est pas sûr : tes deux
> tirets veulent-ils dire "ou", et par quoi veux-tu remplacer...).
> Il reste à s'amuser avec le caractère entre tirets : que veux tu faire
> de 'a'b'c'd' ?
>
> David
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
>
> iD8DBQFEDgt818/WetbTC/oRAuxUAJ0bEWdQyCcdtjhb625T8SANf9qcfgCfTF5x
> zIIK6zqB2545EJCVVk3dvVQ=
> =CSD8
> -----END PGP SIGNATURE-----
>
>
> --
> Pensez à lire la FAQ de la liste avant de poser une question :
> http://wiki.debian.net/?DebianFrench
>
> Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
>
> To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
>
>


merci pour vos reponses, je vais preciser un peu plus la requete:

j'ai une chaine de cette forme la:

MOT 'a' MOT '+' QUELQUECHOSEDAUTRE '-' 42_mauvaisqqchose MOT '*' etc...

en gros c'est un parseur de code en C.

les mots en majuscule ont ete matche par le travail precedement
effectue sur la chaine
les characters entre simple quote ont aussi ete parses
reste a eliminer le cas du : 42_mauvaisqqchose
je partait donc du principe que dans ma chaine, je ne pouvais avoir
que : des mots en majuscule ou des chars entre simple quote.

il me suffisait donc de remplacer tout ce qui n'etait pas de l'un de
ces deux types par ERROR et arreter mon parsing....

et c'est la qu'interviens la regexp de remplacement qui match
l'inverse de ce que je lui donne.

voila j'espere avoir ete assez clair cette fois ci :-)

merci d'avance

--
105 116 039 115 032 110 111 116 032 097
032 098 117 103 044 032 105 116 039 115
032 097 032 102 101 097 116 117 114 101



Reply to: