Python CommonCrawl API过滤器参数上的正则表达式

Python CommonCrawl API过滤器参数上的正则表达式,python,regex,Python,Regex,我试图在filter参数中使用正则表达式,但无法使用$来确定字符串的结尾: 我的请求URL: *.com/&matchtype=domain&fl=url&filter=~url:.com/$ 我的过滤器使用的是~,这使它成为一个正则表达式 在python正则表达式测试仪上正确验证:对于任何.com URL,只需TLD,例如: API文档: 我基本上在每个网站上都得到了很多我不关心的结果,我只想要TLD。 如果我将$取出,它就会工作。此查询应该可以工作: http://index.commo

我试图在filter参数中使用正则表达式,但无法使用$来确定字符串的结尾:

我的请求URL:

*.com/&matchtype=domain&fl=url&filter=~url:.com/$

  • 我的过滤器使用的是
    ~
    ,这使它成为一个正则表达式
  • 在python正则表达式测试仪上正确验证:对于任何.com URL,只需TLD,例如:
API文档:

我基本上在每个网站上都得到了很多我不关心的结果,我只想要TLD。 如果我将
$
取出,它就会工作。

此查询应该可以工作:
http://index.commoncrawl.org/CC-MAIN-2017-39-index?url=*.com/&fl=url&filter=url:.\.com/$

但将来您可能不得不使用
http://index.commoncrawl.org/CC-MAIN-2017-39-index?url=*.com/&fl=url&filter=~url:.\.com/$

  • pywb中有一个已知的bug。它有望很快被修复并部署到index.commoncrawl.org。临时解决方法:使用
    =
    作为正则表达式过滤器,使用
    =~
    作为“包含”过滤器

  • 此处不需要
    matchType=domain
    ,因为URL已由通配符模式匹配
    *.com/
    。它应该查询域名,例如
    http://index.commoncrawl.org/CC-MAIN-2017-39-index?url=commoncrawl.org&matchType=domain&fl=url

  • 正则表达式从字段值的开头匹配,因此它应该是
    *\.com/$
    。请参阅中的改进文档


  • /
    是强制性的吗?尝试将其设置为可选,
    /?
    。请注意,未scaped的
    匹配任何字符。/始终存在,因此我想将其用作主机名结尾的标记。是的,door匹配任何东西,但这并不重要,因为我已经完成了python正则表达式测试,并且它工作正常。这里的重点是为什么$s不起作用。如果没有API,恐怕很难提供帮助。也许它只是不被支持。您可以尝试其他方法,如
    \Z
    (字符串的最末端)或
    (?!)
    (当前位置后不允许使用字符),但如果
    $
    不允许,我怀疑这些复杂的方法是否有效。出于某些奇怪的原因,这不起作用,只有第1页:*。ie/&fl=url&filter=url:.*\。ie/$&page=1过滤器纯粹是次要的,第二个页面(
    page=1
    )可能不包含任何与筛选器匹配的条目/URL。第三页包含一些:
    http://index.commoncrawl.org/CC-MAIN-2017-39-index?url=*.ie/&fl=url&filter=url:.\.ie/$&page=2
    --需要迭代所有页面。