我正在尝试编写一个python脚本,显示我安装的nginx上的URL流。所以我现在让我的脚本打开我的'重写'文件,其中包含正则表达式和位置列表,如下所示:
rewritei ^/ungrad/info.cfm$ /ungrad/info/ permanent;
所以我目前有python做的是读取文件,修剪第一个和最后一个单词(rewritei和premanent;),它只留下一个列表:
[
['^/ungrad/info.cfm$', '/ungrad/info'],
['^/admiss/testing.cfm$', '/admiss/testing'],
['^/ungrad/testing/$', '/ungrad/info.cfm']
]
这导致第一个元素是被观看的URL,第二个元素是重定向到的URL。我现在要做的是获取每个第一个元素,并在整个列表中运行正则表达式,并检查它是否与任何第二个元素匹配。
通过上面的例子,[0] [0]将匹配[2] [1]。
然而,我无法想出一个好的,有效的方法来做到这一点。
答案 0 :(得分:1)
import re
a = [
['^/ungrad/info.cfm$', '/ungrad/info'],
['^/admiss/testing.cfm$', '/admiss/testing'],
['^/ungrad/testing/$', '/ungrad/info.cfm']
]
def matchingfun(b):
for list1 in a: # iterating the main list
for reglist in list1: # iterating the inner lists
count = 0
matchedurl = []
for innerlist in reglist[:1]: # iterating the inner list items
c = b.match(innerlist) # matching the regx
if c:
count = count+1
if count > 0:
matchedurl.append(reglist)
return matchedurl
result1 = []
for list1 in a:
for reglist in list1:
b = re.compile(reglist[0])
result = matchingfun(b)
result1.extend(result)
bs = list(set(result1))
print "matched url is", bs
我猜这有点不高效,但我已经做了一些程度的努力。希望这能回答您的疑问。上面的代码段打印出与整个列表中第二项匹配的网址。