ansible: *2.10.5* (with pip3 install)
python version = 3.9.1+ (default, Jan 20 2021, 14:49:22) [GCC 10.2.1 
20210110]

Escaping special characters in the searched string such as the following 
should be simply done with '\':
- ' --> \'
- ( --> \(
- , --> \,
- ) --> \)

However, it seems to be impossible to perform this task with a single '\' 
or even a double '\\'; for instance, running the following playbook fails:
```
---
- name: Escaping special characters in regex_replace fails
  hosts:
        - localhost
  strategy: debug
  vars:
        searched_string: "('string_a', 'string_b'),('string_c', 'string_d')"
  tasks:
        - name: Escaping with '\' - Result expected is 
"string_a@string_b,string_c@string_d"
          set_fact:
                replaced_string: "{{ searched_string |
                                     regex_replace('\(\'([^\']+)\'\, 
\'([^\']+)\'\)', '\\1@\\2') }}"
...
```
leads to:
```
ERROR! We were unable to read either as JSON nor YAML, these are the errors 
we got from each:
JSON: Expecting value: line 1 column 1 (char 0)

Syntax Error while loading YAML.
  found unknown escape character

The error appears to be in 
'escape_special_characters_in_regex_replace.yml': line 16, column 53, but 
may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

                replaced_string: "{{ searched_string |
                                     regex_replace('\(\'([^\']+)\'\, 
\'([^\']+)\'\)', '\\1@\\2') }}"
                                                    ^ here
```

I thought about using the jinja2 'replace' filter to remove all special 
characters first, but that would just be throwing the can down the road, 
right? ;-)

What am I missing?


-- 
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/f43c3555-8554-45ee-ba87-c7807e15c8b5n%40googlegroups.com.

Reply via email to