如何在Jinja2中使用正则表达式?

时间:2012-10-09 00:17:45

标签: regex jinja2

我是Jinja2的新手,到目前为止,我已经能够完成我想要的大部分工作。但是,我需要使用正则表达式,我似乎无法在the documentation或谷歌上找到任何地方。

我想在Javascript中创建一个模仿此行为的宏:

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

将删除字符串中的字符,然后用下划线替换空格。我怎么能用Jinja2做到这一点?

1 个答案:

答案 0 :(得分:34)

如果您实际上不需要正则表达式,则可以使用名为replace的现有过滤器。否则,您可以注册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