Search code examples
regexjinja2

How do I use regular expressions in Jinja2?


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?


Solution

  • 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