Skip to main content
 首页 » 编程设计

python之将值传递给正则表达式匹配函数

2024年08月12日32Leo_wl

在 python 中(它是一个 Django 过滤器),我这样做:

lReturn = re.sub(r'\[usecase:([ \w]+)]', r'EXTEND WITH <a href="/usecase/%s/\1/">\1</a>' % pCurrentProjectName, lReturn) 

我想使用一个函数而不是一个字符串(这样我就可以检查用户名是否有效),所以它会变成这样:

def _match_function(matchobj): 
    lMatch = matchobj.group(1) 
    return "EXTEND WITH <a href='/usecase/%s/%s/'>%s</a>" % (pCurrentProjectName, lMatch, lMatch) 
 
lReturn = re.sub(r'\[usecase:([ \w]+)]', _match_function, lReturn) 

如何将 pCurrentProjectName 放入 _match_function() 函数?

请您参考如下方法:

您可以创建一个返回函数的函数 (a closure ):

def _match_function(name): 
    def f(matchobj): 
        lMatch = matchobj.group(1) 
        return "EXTEND WITH <a href='/usecase/%s/%s/'>%s</a>" % (name, lMatch, lMatch) 
    return f 
 
lReturn = re.sub(r'\[usecase:([ \w]+)]', _match_function(pCurrentProjectName), lReturn)