elisp regexp recherche dans les chaînes, pas les tampons

J’ai cherché partout dans la documentation emacs lisp comment rechercher des expressions régulières dans une chaîne. Tout ce que je trouve, c’est comment faire cela dans les tampons.

Y a-t-il quelque chose qui me manque? Dois-je simplement cracher ma chaîne dans un tampon temporaire et y chercher? Est-ce juste le style de codage d’élisp, quelque chose auquel je m’habituerai? Existe-t-il une solution standard à ce problème? Manipuler des tampons semble désordonné lorsque je devrais être capable de chercher directement dans une variable déjà présente.

Voici une discussion sur le contenu des chaînes et le contenu des tampons dans le wiki Emacs. Stockez simplement votre chaîne en tant que variable.

La chose délicate à propos des chaînes de caractères est que vous ne modifiez généralement pas la chaîne elle-même (sauf si vous exécutez des fonctions de tableau sur des chaînes, car une chaîne est un tableau, mais cela doit généralement être évité), mais vous renvoyez la chaîne modifiée.

En tout cas, voici un exemple d’utilisation d’une chaîne dans elisp.

Cela va couper les espaces à la fin d’une chaîne:

(setq test-str "abcdefg ") (when (ssortingng-match "[ \t]*$" test-str) (message (concat "[" (replace-match "" nil nil test-str) "]"))) 

La fonction que vous recherchez est la ssortingng-match . Si vous devez effectuer la correspondance à plusieurs resockets, utilisez l’index renvoyé comme paramètre facultatif “start” pour le prochain appel. La documentation se trouve dans le manuel ELisp, chapitre “Recherche par expression régulière”.

Pour remplacer chaque correspondance d’expressions rationnelles dans une chaîne, jetez un coup d’oeil à replace-regexp-in-ssortingng .

Pour rechercher le début d’une chaîne

 (defun ssortingng-starts-with-p (ssortingng prefix) "Return t if STRING starts with PREFIX." (and (ssortingng-match (rx-to-ssortingng `(: bos ,prefix) t) ssortingng) t)) 

Pour rechercher la fin d’une chaîne

 (defun ssortingng-ends-with-p (ssortingng suffix) "Return t if STRING ends with SUFFIX." (and (ssortingng-match (rx-to-ssortingng `(: ,suffix eos) t) ssortingng) t))