gpt4 book ai didi

email - 在网站中匹配正则表达式电子邮件

转载 作者:数据小太阳 更新时间:2023-10-29 03:26:02 27 4
gpt4 key购买 nike

我尝试在 goland 的网站中使用文件包含 url 查找电子邮件匹配项,例如,如果我在文件中放入“http://facebook.com”,他将尝试在网站中查找所有电子邮件,但他总是结果 0。我想我选择了错误的功能,但我试图找到其他功能,但我得到了相同的结果。这里的代码:

    package main

import (
"bufio"
"bytes"
"fmt"
"log"
"net/http"
"os"
"regexp"
"sync"
)

func main() {
var wg sync.WaitGroup
wg.Add(1)
go emailWeb(os.Args[1], &wg)
wg.Wait()

}

func emailWeb(name string, wg *sync.WaitGroup) {
file, err := os.Open(name)
if err != nil {
log.Fatal(err)
}
defer file.Close()

scanner := bufio.NewScanner(file)
for scanner.Scan() {
str := scanner.Text()
nb_arobase := numberEmail(str)
fmt.Println("URL : ", str, " nb email: ", nb_arobase)
}

if err := scanner.Err(); err != nil {
log.Fatal(err)
}
(*wg).Done()
}

func numberEmail(url string) int {
count := 0
reg := regexp.MustCompile(`[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,4}`)
response, err := http.Get(url)
if err != nil {
log.Fatal(err)
} else {
str := response.Body
buf := new(bytes.Buffer)
buf.ReadFrom(str)
bodyStr := buf.String()

for i := 0; i < len(bodyStr); i++ {
if reg.MatchString(string(bodyStr[i])) {
count += 1
}
}
}
return count
}

最佳答案

您正在尝试将正则表达式与 http 响应正文中的每个单独字符进行匹配。如果需要,您可以通过计算匹配的索引来计算整个正文中的匹配项。

resp, err := http.Get(url)
if err != nil {
log.Println(err)
return 0
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
return 0
}
return len(reg.FindAllIndex(body))

关于email - 在网站中匹配正则表达式电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41619311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com