Match littéraux avec "regex_replace' Ansible filtre
Je ne peux pas trouver un moyen pour beaucoup un littéral (un point) dans Ansible est regex_replace filtre. Ici est la tâche:
- name: Display database name
debug:
msg: "{{ vhost | regex_replace('(.+\.)(.+)$', \) }}"
tags: [debug]
Mon intention est de faire correspondre et remplacer l'ensemble de l'URL comme test.staging.domain.com avec sa première partie (test dans l'exemple).
Ansible voudrais signaler l'erreur suivante:
debug:
msg: "{{ vhost | regex_replace('(.+\.)(.+)$', \) }}"
^ here
Nous avons peut-être tort, mais celui-ci semble comme il pourrait être un problème avec
manque les guillemets. Toujours citer l'expression d'un modèle crochets lorsqu'ils
démarrer une valeur.
Comment puis-je match littéraux dans Ansible regexp_replace
filtre?
Vous devez vous connecter pour publier un commentaire.
il est possible d'échapper à littéraux avec double jeux:
De l'expression régulière ci-dessus fonctionne correctement. La première capture d'un groupe d'extraits de la première partie de l'URL jusqu'à ce que le premier point, l'ensemble de la regex de capture de la totalité de l'URL. En passant test.la mise en scène.domaine.com à travers elle produirait juste test.
J'ai essayé de faire la même chose, fini par le faire comme ceci:
*modifier, trouvé une jolie manière:
.split
solution est élégant!Il pourrait être quelque chose de déjanté au sujet d'échapper les caractères, mais il y a une fuite-moins de code littéral dot:
De sorte que votre regex peut être écrit de la
La plupart des personnages perdent de leur sens particulier dans une classe de caractères, et le point est l'un d'entre eux.