我想检查定义模式列表中的URL。
我的模式列表是:

pat = ['/FoodListAdminCP/Login[/]?', '/FoodListAdminCP[/]?']

我用这段代码检查与此列表中一项匹配的URL
import re
f = re.compile('|'.join(pat))
if f.match(self.request.uri):
    self.login = True
else:
    self.login = False

现在,如果我请求/FoodListAdminCP/Dashboard作为URL,则与模式匹配。因为这个URL的开头与我列表中的'/FoodListAdminCP[/]?'匹配。
我希望我的请求URL与整个列表项匹配,而不是其中的一部分。
我该怎么做?

最佳答案

如果要根据模式匹配整个URL,可以使用“^”和“$”来匹配要匹配的字符串的开头和结尾。
在你的例子中你可以使用

f = re.compile('|'.join( '(^'+p+'$)' for p in pat ))

获取正则表达式
'(^/FoodListAdminCP/Login[/]?$)|(^/FoodListAdminCP[/]?$)'

从你的pat列表中。

10-04 10:38