# Need Help in Ansible regex

**URL:** <https://forum.ansible.com/t/need-help-in-ansible-regex/32046>\
**Category:** Ansible Project\
**Created:** [January 24, 2020, 6:09am UTC](https://forum.ansible.com/t/need-help-in-ansible-regex/32046 "2020-01-24T06:09:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rakesh\_Parida](https://avatars.discourse-cdn.com/v4/letter/r/3ab097/32.png) [@Rakesh\_Parida](https://forum.ansible.com/u/Rakesh_Parida)\
**Post date:** [January 24, 2020, 6:09am UTC](https://forum.ansible.com/t/need-help-in-ansible-regex/32046/1 "2020-01-24T06:09:47Z")

</div>

Hi all,

I have a rpm whcich i have added in a list. I want to make it dynamic i.e when the version of rpm changes playbook should handle it.  
I have build a logic but the playbook skips the task where i have mentioned the regex. Kindly help me .

- hosts: localhost  
tasks:

- name: Create a list  
set\_fact:  
some\_value:

- dp-steps-common-3.0.12.rpm

- debug:  
msg: “{{ some\_value }}”

- name: Print DP steps records  
set\_fact:  
dp\_record: “{{ item }}”  
when: item is defined and item == ‘regexp (dp-steps-common-[0-9./]+[0-9./]+[0-9][0-9./]rpm$)’  
with\_items: “{{ some\_value }}”

- name: Create an empty list variable  
set\_fact:  
nodes1: 

- name: Append string to ECE node list  
set\_fact:  
nodes1: “{{ ece\_nodes + [item] }}”  
with\_items:

- “{{ dp\_record | default(None) }}”  
when: item is defined and item != None and item != “”

- name: Display Lists  
debug:  
msg:

- “{{ nodes1 }}”

OUTput:

PLAY [localhost] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

TASK [Gathering Facts] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [localhost]

TASK [Create a list] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [localhost]

TASK [debug] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [localhost] =\> {  
“msg”: [  
“dp-steps-common-3.0.12.rpm”  
]  
}

TASK [Print DP steps records] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
skipping: [localhost] =\> (item=dp-steps-common-3.0.12.rpm)

TASK [Create an empty list variable] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [localhost]

TASK [Append string to ECE node list] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
skipping: [localhost] =\> (item=)

TASK [Display Lists] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [localhost] =\> {  
“msg”: [  
  
]

---

<div class="post-metadata">

**Author:** ![cyril.stoll](https://avatars.discourse-cdn.com/v4/letter/c/b4bc9f/32.png) [@cyril.stoll](https://forum.ansible.com/u/cyril.stoll)\
**Post date:** [January 24, 2020, 5:20pm UTC](https://forum.ansible.com/t/need-help-in-ansible-regex/32046/2 "2020-01-24T17:20:45Z")

</div>

Hi

Not quite sure what you are trying to do with the slash (“/”) symbol in your regex. If you want to use it to escape the dot (“.”) sign then you need to use a backslash ("") instead of a slash and you need to put it before the dot not after it.

So try this: dp-steps-common-[0-9.]+[0-9.]+[0-9][0-9.]rpm$

Also there is a quite handy webpage that helps you test your regex. Just visit [regex101.com](http://regex101.com) and type your regex in the small field on top and the string you want to capture with your regex in the large field below. Then you can play around with your regex and the webpage will tell you which part of your regex captured which part of the string.

Best,  
Cyril

---

<div class="post-metadata">

**Author:** ![cassell](https://avatars.discourse-cdn.com/v4/letter/c/ecae2f/32.png) [@cassell](https://forum.ansible.com/u/cassell)\
**Post date:** [January 25, 2020, 1:51am UTC](https://forum.ansible.com/t/need-help-in-ansible-regex/32046/3 "2020-01-25T01:51:31Z")

</div>

> Hi all,
> 
> I have a rpm whcich i have added in a list. I want to make it dynamic  
> i.e when the version of rpm changes playbook should handle it.  
> I have build a logic but the playbook skips the task where i have  
> mentioned the regex. Kindly help me .
> 
> - hosts: localhost  
> tasks:  
> - name: Create a list  
> set\_fact:  
> some\_value:  
> - dp-steps-common-3.0.12.rpm
> 
> - debug:  
> msg: "{{ some\_value }}"
> 
> - name: Print DP steps records  
> set\_fact:  
> dp\_record: "{{ item }}"  
> when: item is defined and item == 'regexp  
> (dp-steps-common-[0-9./]+[0-9./]+[0-9][0-9./]rpm$)'

In the first part, item will always be defined or the task won't run at all, so no need to test it.

In the second part, you're comparing two static strings here that will never match. You probably meant to do something like

when: item is regex('your regex')

See for examples: [https://docs.ansible.com/ansible/latest/user\_guide/playbooks\_tests.html#testing-strings](https://docs.ansible.com/ansible/latest/user_guide/playbooks_tests.html#testing-strings)

V/r,  
James Cassell
