Python中的URL模式匹配

时间:2017-01-19 21:40:09

标签: python-3.x

我希望编写一个程序来匹配URI列表中的恶意URN。问题很简单,但只有简单的Python技能,甚至更少的C ++知识等,我不确定谷歌离开我后几乎没有工作的地方。因此,如果可能的话,Python建议对我来说最容易用这一点指导来写,但我会采取我能得到的。

以下是这样的情景:我将拥有同一恶意软件广告系列的恶意网页CSV,其URI中通常会包含一些静态标识符。我需要将每个字符串中的一些字符长度(例如4-10)与每个字符串进行比较,然后输出任何匹配项。我坚持的部分是如何获取100个URL列表并对每个URL进行可行性测试。

实施例: uri1:hxxp://domain.name/abcdefghijklmnopqrstuvwxyz uri2:hxxp://domain.name/0123456789!@#$%^& *()_ + - =

所以循环会比较abcd到0123然后1234,3 3456等。然后bcde到0123等等......显然在这个例子中没有任何匹配但是更容易说明我期望代码可能有效。

TLDR:如何在字符串的每个字符中使用100个URI并“蠕变”,而不是每个字符串都包含100个以上的100-200个数组?

1 个答案:

答案 0 :(得分:0)

你可以使用的是给出两个字符串的某种函数,给你一对 n 长子串:

from collections import deque

def n_wise(s1, s2, length=4):
    i1=iter(s1)
    i2=iter(s2)
    x, y = deque(maxlen=length), deque(maxlen=length)
    for _ in range(length):
        x.append(next(i1))
        y.append(next(i2))
    yield ''.join(x), ''.join(y)
    for a, b in zip(i1, i2):
        x.append(a)
        y.append(b)
        yield ''.join(x), ''.join(y)

然后你可以迭代比较这样的东西:

>>> for left, right in n_wise("abcdefghijk...", "0123456789..."):
        ...