我想检查定义模式列表中的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
列表中。