Merge pull request #11743 from renard/regex_escape-filter

Regex escape filter
pull/11744/head
James Cammarata 9 years ago
commit a78ed39f93

@ -401,6 +401,11 @@ To replace text in a string with regex, use the "regex_replace" filter::
.. note:: If "regex_replace" filter is used with variables inside YAML arguments (as opposed to simpler 'key=value' arguments),
then you need to escape backreferences (e.g. ``\\1``) with 4 backslashes (``\\\\``) instead of 2 (``\\``).
To escape special characters within a regex, use the "regex_escape" filter::
# convert '^f.*o(.*)$' to '\^f\.\*o\(\.\*\)\$'
{{ '^f.*o(.*)$' | regex_escape() }}
A few useful filters are typically added with each new Ansible release. The development documentation shows
how to extend Ansible filters by writing your own as plugins, though in general, we encourage new ones
to be added to core so everyone can make use of them.

@ -222,6 +222,10 @@ def version_compare(value, version, operator='eq', strict=False):
except Exception, e:
raise errors.AnsibleFilterError('Version comparison: %s' % e)
def regex_escape(string):
'''Escape all regular expressions special characters from STRING.'''
return re.escape(string)
@environmentfilter
def rand(environment, end, start=None, step=None):
r = SystemRandom()
@ -356,6 +360,7 @@ class FilterModule(object):
'search': search,
'regex': regex,
'regex_replace': regex_replace,
'regex_escape': regex_escape,
# ? : ;
'ternary': ternary,

Loading…
Cancel
Save