Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

replace-regexp-in-string

5 réponses
Avatar
Eric Reinbold
Ave les gens,

Je suis content: ça marche! (enfin, ça fonctionne, faudra lui donner des cours de marche)

Bref, au poil, mais il reste un dernier soucis.
J'ai le 'replace-regexp-in-string' qui me rend des services mais je cherche un
'insert-regexp-in-string' ou quelque chose de genre:
j'ai "TG485" et je voudrais qu'il me donne "TG 485" dans une defun() elips.

Quelqu'un aurairera-t-il une idée?

A+
Eric

5 réponses

Avatar
Florent Georges
Eric Reinbold wrote:

J'ai le 'replace-regexp-in-string' qui me rend des services mais je cherche un
'insert-regexp-in-string' ou quelque chose de genre:
j'ai "TG485" et je voudrais qu'il me donne "TG 485" dans une defun() elips.



ELISP> (replace-regexp-in-string "TG" "TG " "TG485")
"TG 485"
ELISP>

Sinon, si tu veux quelque chose de plus specifique, specifie-le plus
en detail, parce que la, je ne vois pas trop. Donne la signature que
tu attends de 'insert-regexp-in-string' et quelques exemples
d'utilisation.

--drkm
Avatar
Eric Reinbold
"Florent Georges" writes:

Eric Reinbold wrote:

J'ai le 'replace-regexp-in-string' qui me rend des services mais je cherche un
'insert-regexp-in-string' ou quelque chose de genre:
j'ai "TG485" et je voudrais qu'il me donne "TG 485" dans une defun() elips.



ELISP> (replace-regexp-in-string "TG" "TG " "TG485")
"TG 485"
ELISP>

Sinon, si tu veux quelque chose de plus specifique, specifie-le plus
en detail, parce que la, je ne vois pas trop. Donne la signature que
tu attends de 'insert-regexp-in-string' et quelques exemples
d'utilisation.

--drkm



Voui bien sûr, j'étais en train de me demander si c'était assez..

J'ai des choses comme ça: (setq title (replace-regexp-in-string "[àâ]" "a" title))

C'est à dire que dans un titre, je regarde si il y a des 'à' ou 'â' et je
les remplace par 'a'. Ca d'accord.

Maintenant, il y a également des numéros "LLLCCC" L=Lettre, C=Chiffre,
ca peut être "LCCCC", "LLLC" ou "LLC" peut importe du moment qu'il y ait
d'abord la ou les lettres (en majuscules) et puis ensuite un nombre qui va de 1 à 9999.

Je veux qu'à la sortie ca me fasse "LLL CCC", "L CCCC", "LLL C" ou "LL C".
C'est le "-in-string", je ne vois pas comment on fait pour rechercher les
fonction qui se termine par "-in-string"?

Bref, ca va mieux là?....
Eric
Avatar
Florent Georges
Eric Reinbold wrote:

Maintenant, il y a également des numéros "LLLCCC" L=Lettre, C=Chi ffre,
ca peut être "LCCCC", "LLLC" ou "LLC" peut importe du moment qu'il y ait
d'abord la ou les lettres (en majuscules) et puis ensuite un nombre qui v a de 1 à 9999.

Je veux qu'à la sortie ca me fasse "LLL CCC", "L CCCC", "LLL C" ou "LL C".
C'est le "-in-string", je ne vois pas comment on fait pour rechercher les
fonction qui se termine par "-in-string"?



ELISP> (replace-regexp-in-string
"([A-Z]+)([0-9]+)"
"1 2"
"TG485")
"TG 485"
ELISP> (defun my:replace (str)
"... doc ..."
(replace-regexp-in-string
"([A-Z]+)([0-9]+)"
"1 2"
str))
my:replace
ELISP> (my:replace "TG485")
"TG 485"
ELISP>

--drkm
Avatar
Eric Reinbold
"Florent Georges" writes:
ELISP> (defun my:replace (str)
"... doc ..."
(replace-regexp-in-string
"([A-Z]+)([0-9]+)"
"1 2" | str))


| |
| Ca, c'est la coupure.
|
|
C'est l'espace?

Si j'ecrivais "1troulala2", j'aurais "TRtroulala913"?

Et si je fesais:
ELISP> (defun my:replace (str)
"... doc ..."
(replace-regexp-in-string
"([A-Z]+)([0-9]+)([a-z]+)"
"1 2 3" str))



j'aurais:
"TR 913 asas"

Dingue!
Merci.
Avatar
Florent Georges
Eric Reinbold wrote:

"Florent Georges" writes:

> ELISP> (defun my:replace (str)
> "... doc ..."
> (replace-regexp-in-string
> "([A-Z]+)([0-9]+)"
> "1 2" | str))
| |
| Ca, c'est la coupure.
|
|
C'est l'espace?



Exact. C'est appele "back reference" dans le manuel, je crois. Les
parentheses (precedees d'un backslash dans la regexp, donc deux dans la
representation lexicale d'une string ELisp) delimitent un groupe. Les
nombres (precedes d'un etc.) font reference a ces groupes, dans l'ordre
dans lequel ils sont matches.

Si j'ecrivais "1troulala2", j'aurais "TRtroulala913"?



Yep.

Et si je fesais:

> ELISP> (defun my:replace (str)
> "... doc ..."
> (replace-regexp-in-string
> "([A-Z]+)([0-9]+)([a-z]+)"
> "1 2 3" str))

j'aurais:
"TR 913 asas"



Yep, si tu l'appelles avec (my:replace "TR913asas").

--drkm