DOCUMENTATION: name: regex_replace version_added: "2.0" short_description: replace a string via regex description: - Replace a substring defined by a regular expression with another defined by another regular expression based on the first match. notes: - Maps to Python's C(re.sub). - 'The substring matched by the group is accessible via the symbolic group name or the ``\{number}`` special sequence. See examples section.' positional: _input, _regex_match, _regex_replace options: _input: description: String to match against. type: str required: true _regex_match: description: Regular expression string that defines the match. type: int required: true _regex_replace: description: Regular expression string that defines the replacement. type: int required: true multiline: description: Search across line endings if V(True), do not if otherwise. type: bool default: no ignorecase: description: Force the search to be case insensitive if V(True), case sensitive otherwise. type: bool default: no count: description: Maximum number of pattern occurrences to replace. If zero, replace all occurrences. type: int default: 0 version_added: "2.17" mandatory_count: description: Except a certain number of replacements. Raises an error otherwise. If zero, ignore. type: int default: 0 version_added: "2.17" EXAMPLES: | # whatami => 'able' whatami: "{{ 'ansible' | regex_replace('^a.*i(.*)$', 'a\\1') }}" # commalocal => 'localhost, 80' commalocal: "{{ 'localhost:80' | regex_replace('^(?P.+):(?P\\d+)$', '\\g, \\g') }}" # piratecomment => '#CAR\n#tar\nfoo\n#bar\n' piratecomment: "{{ 'CAR\ntar\nfoo\nbar\n' | regex_replace('^(.ar)$', '#\\1', multiline=True, ignorecase=True) }}" # Using inline regex flags instead of passing options to filter # See https://docs.python.org/3/library/re.html for more information # on inline regex flags # piratecomment => '#CAR\n#tar\nfoo\n#bar\n' piratecomment: "{{ 'CAR\ntar\nfoo\nbar\n' | regex_replace('(?im)^(.ar)$', '#\\1') }}" # 'foo=bar=baz' => 'foo:bar=baz' key_value: "{{ 'foo=bar=baz' | regex_replace('=', ':', count=1) }}" RETURN: _value: description: String with substitution (or original if no match). type: str