web-dev-qa-db-fra.com

Comment utiliser les expressions régulières dans Jinja2?

Je suis nouveau sur Jinja2 et jusqu'à présent, j'ai pu faire la plupart de ce que je veux. Cependant, j'ai besoin d'utiliser des expressions régulières et je n'arrive pas à trouver quoi que ce soit dans la documentation ou sur Google.

Je voudrais créer une macro qui imite le comportement de ceci en Javascript:

function myFunc(str) {
    return str.replace(/someregexhere/, '').replace(' ', '_');
}

qui supprimera les caractères d'une chaîne, puis remplacera les espaces par des traits de soulignement. Comment puis-je faire cela avec Jinja2?

26
Jason

Il existe un filtre déjà existant appelé replace que vous pouvez utiliser si vous n'avez pas réellement besoin d'une expression régulière. Sinon, vous pouvez enregistrer un filtre personnalisé :

{# 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
34
Sean Vieira