[英]Matching regex to list items in Python
我正在嘗試編寫一個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]。
但是,我很難想到一種有效的有效方法。
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
我想這有點低效,但我在某種程度上做了。 希望這能回答您的查詢。 上面的代碼段將打印與整個列表中第二個項目匹配的網址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.