OVH Cloud OVH Cloud

Remplacement de « : [A-Z] » par « : [a-z] »

20 réponses
Avatar
Denis Bitouzé
Bonjour,

=E0 nouveau mes probl=E8mes de regexp : je souhaiterais faire remplacer
(interactivement) les s=E9quences du genre

: <majuscule>

par

: <minuscule>

J'ai tent=E9

C-M-% : [A-Z] RET : [a-z] RET

mais =E7a me remplace par exemple

: Salut

par

: [a-z]alut

J'ai l'air malin !

Merci d'avance pour toute suggestion...
--=20
Denis

10 réponses

1 2
Avatar
Denis Bitouzé
Le Wed, 14 Nov 2007 22:28:54 +0100
Erwan David a écrit :

C-u 1637 C-x e



Oui, mais c'est une fois que j'ai effectué tous les remplacements que
je me suis rendu compte que c'était ce nombre-là de fois... :)
--
Denis
Avatar
Denis Bitouzé
Le Thu, 15 Nov 2007 00:29:31 +0100
Matthieu Moy a écrit :

Avec Emacs 22, on peut aussi faire « C-x e » une fois, puis juste
« e » pour répéter.



Ah, ça c'est bien !

1637 fois, ça fait beaucoup, mais le doigt appuyé
sur « e » pendant quelques secondes, ça en fait déjà quelqu es
dizaines ;-). Enfin, comme le dis Erwan, y'a quand même C-u 42 C-x e
pour refaire exactement 42 fois l'action, donc, sauvé !



Certes, certes mais ça ne permet pas de surveiller les exceptionnels
cas où on ne voudrait pas effectuer le remplacement...

En fait, je trouve ces keyboard-macros super pratiques pour des tâches
semi-automatiques, c'est à dire, systématiques et chiantes à faire à
la main, mais pas dans un contexte où on a forcément envie de
s'embêter à écrire un bout de code lisp ou une regexp qui gère bi en
tous les cas.



Je souscris parfaitement : je les utilise fréquemment.

Ça permet de réutiliser les raccourcis claviers qu'on a
hardcodé dans les doigts ;-).



:)
--
Denis
Avatar
Denis Bitouzé
Le Wed, 14 Nov 2007 23:32:43 +0000 (UTC)
(Luc Habert) a écrit :

D'autant qu'il y a des cas qu'on ne peut pas traiter avec des regexps.



Ça, ça doit être dur à trouver...
--
Denis
Avatar
Luc.Habert.00__arjf
Dès que tu as des structures récursives de profondeur non bornée. C'est
traitable avec C-M-f et cie, mais pas avec des regexps.
Avatar
Matthieu Moy
Denis Bitouzé writes:

Certes, certes mais ça ne permet pas de surveiller les exceptionnels
cas où on ne voudrait pas effectuer le remplacement...



Donc, en gros, tu veux un truc interactif pour pouvoir
confirmer/annuler chaque remplacement individuellement, mais tu ne
veux pas avoir à valider à la main à chaque fois ?

;-)

--
Matthieu
Avatar
Denis Bitouzé
Le Thu, 15 Nov 2007 07:52:09 +0000 (UTC)
(Luc Habert) a écrit :

Dès que tu as des structures récursives de profondeur non bornée.



Diable ! J'imagine ce que ça peut être mais je ne vois pas d'exemple
concret. Tu peux m'en fournir ?
--
Denis
Avatar
Denis Bitouzé
Le Thu, 15 Nov 2007 11:10:29 +0100
Matthieu Moy a écrit :

Donc, en gros, tu veux un truc interactif pour pouvoir
confirmer/annuler chaque remplacement individuellement,



Oui.

mais tu ne
veux pas avoir à valider à la main à chaque fois ?



Euh, ben si, ça ne me dérange pas mais la macro :

C-x ( C-s : RET C-l C-x )

si je lui applique C-x e, va se mettre en branle (chercher, trouver,
minusculer -- i.e. appliquer le passage en minuscule, ça vient de
sortir) alors que je voudrais qu'elle cherche, trouve, me montre ce
qu'elle a trouvé et que je puisse alors choisir de minusculer ou pas.

Ou alors j'ai rien compris ;)

Tiens, au fait, au sujet de la macro clavier pour

1. rechercher les deux points suivis d'un espace puis d'une majuscule,
quelle qu'elle soit

2. les remplacer par des deux points suivis d'un espace puis de la
minuscule de la lettre majuscule de tout à l'heure

ne faudrait-il pas plutôt :

C-x ( C-s : SPC 2*<left> C-SPC 3*<right> C-x C-l C-x )
--
Denis
Avatar
Matthieu Moy
Denis Bitouzé writes:

Le Thu, 15 Nov 2007 07:52:09 +0000 (UTC)
(Luc Habert) a écrit :

Dès que tu as des structures récursives de profondeur non bornée.



Diable ! J'imagine ce que ça peut être mais je ne vois pas d'exemple
concret. Tu peux m'en fournir ?



C'était une bien grande phrase pour dire « par exemple trouver la
parenthèse correspondante » ;-).

Typiquement, ajouter le « ; » manquant derrière toutes les classes en
C++, ça se fait en cherchant « class », puis forward-sexp, et « ; »,
alors qu'avec une regexp ...

Ceci dit, c'est pas possible avec des expressions régulières
« normales » (le langage des parenthèses bien parenthésées est bien
connu comme n'étant pas régulier), mais je serais pas surpris qu'avec
des expressions régulières étendues à la perl ou Emacs, on puisse
quand même faire ça.

--
Matthieu
Avatar
Luc.Habert.00__arjf
Matthieu Moy :

C'était une bien grande phrase pour dire « par exemple trouver la
parenthèse correspondante » ;-).



Et pour continuer dans le grandiloquent, tout ce qui est refactoring.
Avatar
Matthieu Moy
Denis Bitouzé writes:

si je lui applique C-x e, va se mettre en branle (chercher, trouver,
minusculer -- i.e. appliquer le passage en minuscule, ça vient de
sortir) alors que je voudrais qu'elle cherche, trouve, me montre ce
qu'elle a trouvé et que je puisse alors choisir de minusculer ou pas.



Oui, mais c'est pas bien difficile à adapter ...

C-s :
C-x ( M-l C-s : RET C-x )
C-x e eeeeee ...

Ou alors j'ai rien compris ;)

Tiens, au fait, au sujet de la macro clavier pour

1. rechercher les deux points suivis d'un espace puis d'une majuscule,
quelle qu'elle soit

2. les remplacer par des deux points suivis d'un espace puis de la
minuscule de la lettre majuscule de tout à l'heure

ne faudrait-il pas plutôt :

C-x ( C-s : SPC 2*<left> C-SPC 3*<right> C-x C-l C-x )



Il fallait bien sûr lire « M-l » dans ma solution. Après, c'est non
garanti pour les cas où tu as autre chose qu'un mot normal derrière
les deux points, hein ...

--
Matthieu
1 2