mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge pull request #11743 from renard/regex_escape-filter
Regex escape filter
This commit is contained in:
commit
a78ed39f93
2 changed files with 10 additions and 0 deletions
|
@ -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),
|
.. 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 (``\\``).
|
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
|
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
|
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.
|
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:
|
except Exception, e:
|
||||||
raise errors.AnsibleFilterError('Version comparison: %s' % 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
|
@environmentfilter
|
||||||
def rand(environment, end, start=None, step=None):
|
def rand(environment, end, start=None, step=None):
|
||||||
r = SystemRandom()
|
r = SystemRandom()
|
||||||
|
@ -356,6 +360,7 @@ class FilterModule(object):
|
||||||
'search': search,
|
'search': search,
|
||||||
'regex': regex,
|
'regex': regex,
|
||||||
'regex_replace': regex_replace,
|
'regex_replace': regex_replace,
|
||||||
|
'regex_escape': regex_escape,
|
||||||
|
|
||||||
# ? : ;
|
# ? : ;
|
||||||
'ternary': ternary,
|
'ternary': ternary,
|
||||||
|
|
Loading…
Reference in a new issue