正则表达式具有不同的t(未知)字符串匹配

时间:2018-11-21 14:01:03

标签: regex go

我正在尝试使用GoColly框架获取所有HREF链接,但是 仅允许将任何域的URL用作根URL或SubDomains(否 路径)。我已经注释掉了我的REGEXP。文件扩展名不 物。我只是不想要在“ /”之后的任何内容。我尝试使用 变量“ Domain”和concat来构建“变量” regexp。甚至不确定 如果是这样的话。

  1. Twitter.Com-TRUE
  2. hello.authac.com-是
  3. whole.facebook.com-真
  4. twiiter.com/dd -FALSE
  5. hello.authac.com/sd.html虚假
  6. whole.facebook.com/sdsd/dsd/as.txt虚假

    // Main
    package main
    import (
    "log"
    "fmt"
    "time"
    //"regexp"
    "net/http"
    "github.com/gocolly/colly"
    )
    
    var Target string
    var Domain string
    
    
    func main() {
    //r := regexp.MustCompile("(https:" + Domain + ".com)$")
    
    
    c := colly.NewCollector(
        //colly.URLFilters(r),
    
    )
    
    
    
    
    
    c.OnError(func(r *colly.Response, err error) {
        fmt.Println(r.Request.URL, "Is Not Reachable", r.StatusCode) 
    })
    
    
    
    // Find and visit all links
    c.OnHTML("a", func(e *colly.HTMLElement) {
        e.Request.Visit(e.Attr("href"))
    })
    
    
    c.OnRequest(func(r *colly.Request) {
        Domain := r.URL.String()
        Target := BannerGrab(Domain)
        fmt.Println(Target)
        fmt.Println("Dropping By.. ", r.URL)
        time.Sleep(1000 * time.Millisecond)
    })
    
    c.Visit("https://www.twitter.com/")
    }
    
    //CheckDB if not listed else add
    //RiskDB
    //Email
    
    
    func BannerGrab(s string) string {
    
    client := &http.Client{}
    req, err := http.NewRequest("GET", s, nil)
        if err != nil {
        log.Fatalln(err)
    }
    req.Header.Set("User-Agent", "Authac/0.1")
    resp, _ := client.Do(req)
    serverEntry := resp.Header.Get("Server")
    return serverEntry
    
    }
    

2 个答案:

答案 0 :(得分:0)

可能的正则表达式为:

/ ^[^\/\\]+$ / gmi

任何时候只要文本中有“ \”或“ /”都不匹配。

答案 1 :(得分:0)

下面的正则表达式可以匹配仅包含域和子域且没有路径的URL,

  

r:= regexp.MustCompile(“(https | http)://(。*?)”)

要添加, colly.URLFilters 将仅抓取与模式匹配的URL。它也不会从完整URL创建与模式匹配的URL,然后进行爬网。