La documentation (clojure.string/replace s match replacement)
indique que le remplacement est littéral et aucun caractère n'est traité spécialement dans les chaînes mais le $1
$2
et ainsi de suite.
Si vous voulez que vous utilisiez votre remplacement tel quel, vous pouvez utiliser le (clojure.string/re-quote-replacement r)
pour le citer. Mais si vous vérifiez cette fonction, il produit 4 backspaces pour un backspace:
(clojure.string/re-quote-replacement \\) ;;=> "\\\\"
Il semble donc que la barre oblique inverse doit être échappé, donc \\\\
devrait fonctionner:
(clojure.string/replace "abc<def>" #"(\w+)<(\w+)>" "\\\\ruby{$1}{$2}") ;;=> "\\ruby{abc}{def}"
Il fonctionne. Maintenant, je reçois un seul \ dans la sortie. Merci. –
Alors pourquoi n'acceptez-vous pas ma réponse @avalan_che? –
Désolé, j'ai oublié - je ne pouvais pas attendre pour tester votre réponse. –