2017-10-05 1 views

Répondre

2

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}" 
+0

Il fonctionne. Maintenant, je reçois un seul \ dans la sortie. Merci. –

+0

Alors pourquoi n'acceptez-vous pas ma réponse @avalan_che? –

+0

Désolé, j'ai oublié - je ne pouvais pas attendre pour tester votre réponse. –