如何检查与多个模式匹配的字符串?

Zaa*_*ani 3 python regex tornado python-2.7

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

pat = ['/FoodListAdminCP/Login[/]?', '/FoodListAdminCP[/]?']
Run Code Online (Sandbox Code Playgroud)

我使用此代码来检查与此列表中的一项匹配的 URL

import re
f = re.compile('|'.join(pat))
if f.match(self.request.uri):
    self.login = True
else:
    self.login = False
Run Code Online (Sandbox Code Playgroud)

现在,如果我请求/FoodListAdminCP/DashboardURL,则它与模式匹配。因为此 URL 的开头与'/FoodListAdminCP[/]?'我的列表中的人员匹配。

我希望我的请求 URL 与整个列表项匹配,而不是其中的一部分。

我怎样才能做到呢?

Mar*_*ner 5

如果要将整个 URL 与您的模式进行匹配,可以使用“^”和“$”来匹配要匹配的字符串的开头和结尾。

在你的例子中你可以使用

f = re.compile('|'.join( '(^'+p+'$)' for p in pat ))
Run Code Online (Sandbox Code Playgroud)

获取正则表达式

'(^/FoodListAdminCP/Login[/]?$)|(^/FoodListAdminCP[/]?$)'
Run Code Online (Sandbox Code Playgroud)

从你的pat清单中。