In plain terms it is really this: [[]']
The outside square brackets define a character set. The characters in between mean "any of these". Since square brackets define a character set we have to escape the inside square brackets to be see as characters in the set. [\[\]'] Since this is ansible we have to escape the backslashes. [\\[\\]'] You could place any characters in that set. The regex matches *any* of them any number of times. For example I could use [walter] and it would look for any of those characters. You also can use ranges like [a-dv-z]. This all follows Python regex rules. Walter -- Walter Rowe, Division Chief Infrastructure Services Division Mobile: 202.355.4123 On Jan 10, 2024, at 11:03 AM, Dimitri Yioulos <[email protected]> wrote: Walter, to further my knowledge, would you mind explaining further what this regex \"([\\[\\]'])\",' does? Is the regex specifi to regex_replace? On Wednesday, January 10, 2024 at 10:33:53 AM UTC-5 Dimitri Yioulos wrote: Walter, that worked, and thanks so much! I both appreciate the regex solution, and it simplification. I also probably be able to reuse this, with some modifications, depending on what I'm trying to accomplish. Double win. Thanks again! On Wednesday, January 10, 2024 at 10:14:32 AM UTC-5 Rowe, Walter P. (Fed) wrote: This works. regex_replace(\"([\\[\\]'])\",'') Escaping the double quotes that define the search regex gets around needing to escape the single quote. Also note that I collapsed your search into a single character set. --- - name: test hosts: localhost become: false gather_facts: false vars: mystr: "['/First Datacenter/vm/Prod-SRM']" tasks: - debug: msg="{{ mystr | regex_replace(\"([\\[\\]'])\",'') }}" % ansible-playbook -i localhost, foo.yml PLAY [test] ************************************************************************************************************ TASK [debug] *********************************************************************************************************** ok: [localhost] => { "msg": "/First Datacenter/vm/Prod-SRM" } PLAY RECAP ************************************************************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 The solution was found on this stack overflow page. https://stackoverflow.com/questions/52495838/ansible-remove-the-single-quote-character-from-a-string Walter -- Walter Rowe, Division Chief Infrastructure Services Division Mobile: 202.355.4123<tel:(202)%20355-4123> On Jan 10, 2024, at 9:27 AM, Rowe, Walter P. (Fed) <[email protected]> wrote: Have you tried: regex_replace('(\\[)|(\\])|(\\')', '') Walter -- Walter Rowe, Division Chief Infrastructure Services Division Mobile: 202.355.4123<tel:(202)%20355-4123> On Jan 10, 2024, at 9:08 AM, Dimitri Yioulos <[email protected]> wrote: Hello, all. I'm working with VMware modules in removing snapshots across all vCenter folders. In order for this to work, I first have to get the folders in which the virtual machines live. Here's the playbook: --- - hosts: all become: false gather_facts: false vars_prompt: - name: "vcenter_username" prompt: "Enter your Vcenter username" private: no - name: "vcenter_password" prompt: "Enter your VMware password" private: yes vars: vcenter_hostname: vcenter1.mycompany.com<http://vcenter1.mycompany.com/> vcenter_datacenter: First Datacenter tasks: - name: Find virtual machine's folder name vmware_guest_find: hostname: "{{ vcenter_hostname }}" username: "{{ vcenter_username }}" password: "{{ vcenter_password }}" name: "{{ inventory_hostname }}" validate_certs: False delegate_to: localhost ignore_errors: true register: vm_facts tags: - folder - name: Show folders ansible.builtin.debug: msg: "{{ vm_facts.folders }}" tags: - folder - name: Remove all snapshots of a VM community.vmware.vmware_guest_snapshot: hostname: "{{ vcenter_hostname }}" username: "{{ vcenter_username }}" password: "{{ vcenter_password }}" datacenter: "{{ vcenter_datacenter }}" folder: "{{ vm_facts.folders | regex_replace('(\\[)|(\\])', '') }}" name: "{{ inventory_hostname }}" state: remove_all validate_certs: False delegate_to: localhost Previous to my having employed regex_replace, this is the output I'd get, e.g., for a vm's folder: "['/First Datacenter/vm/Prod-SRM']" The problem with that is [' and ']. They can't be part pf the folder name. After employing regex-replace, the output is: " '/Bedford Datacenter/vm/Bedford-Prod-SRM' " Try as I may, I've not been able to find a way to also remove the single quotes (the double quotes can remain). I've tried appending to the regex_replace, but every piece of code i've used has failed. regex_replace('(\\[)|(\\])'|(addlcodehere), '') }} Your kinf assistance requested. -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/34393455-5021-4342-89b4-de276d68ccd9n%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/34393455-5021-4342-89b4-de276d68ccd9n%40googlegroups.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]<mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/d6b6bcd4-71fd-4193-acb7-fdd740ca7202n%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/d6b6bcd4-71fd-4193-acb7-fdd740ca7202n%40googlegroups.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/386391D7-3331-4B32-A966-A5A1EA4B84A0%40nist.gov.
