I'm new to Jinja2 and so far I've been able to do most of what I want. However, I need to use regular expressions and can't seem to find anything anywhere in the documentation or on Google.
I'd like to create a macro that mimics the behavior of this in Javascript:
function myFunc(str) {
return str.replace(/someregexhere/, '').replace(' ', '_');
}
which will remove characters in a string and then replace spaces with underscores. How can I do this with Jinja2?
There is an already existing filter called replace
that you can use if you don't actually need a regular expression. Otherwise, you can register a custom filter:
{# Replace method #}
{{my_str|replace("some text", "")|replace(" ", "_")}}
# Custom filter method
def regex_replace(s, find, replace):
"""A non-optimal implementation of a regex filter"""
return re.sub(find, replace, s)
jinja_environment.filters['regex_replace'] = regex_replace