2017-11-10 2 views
0

Ich versuche, die Hauptversionsnummer einer Variablen zu erfassen, und um dies zu tun, ich versuche, die Zahlen nach der Hauptversionsnummer zu entfernen:ansible regex_replace

In variable.yml:

version: 3.9.5 
main_version: "{{ version | regex_replace('^.*(..)$', '')}}" 

Das sollte mir 3.9 geben, aber Debug gibt mir nichts.

Was ist der richtige Weg, dies zu tun?

(und dafür sorgen, dass es immer noch Dinge zu behandeln wie 3.10.1 wäre in der Lage, so dass ein main_version von 3.10 zurückkehren würde, und die Dinge auch wie 3.10.1-rcblah, und das wäre ein main_version von 3.10 zurück)

Antwort

1

ich denke, Ihr regexp etwas sein sollte:

'^.*(\.[0-9]*)$' 

Aber warum Sie nicht version_compare verwenden? http://docs.ansible.com/ansible/latest/playbooks_tests.html#version-comparison

+0

Danke, ich musste doppelte Flucht für Yml, um es zu akzeptieren. Also ist mein vollständiger Befehl 'main_version: '{{version | regex_replace ('^(. *) (\\. [0-9] *) $ ',' \\ 1 ')}}" '. – Rekovni

+0

Ich habe version_compare gelesen, konnte aber nicht sehen, wie das für mein Szenario funktionieren würde. – Rekovni