1.19.2 正则全部匹配 域名,无法匹配
1. 运行环境
go version go1.19.2 windows/amd64
//: <> (当前使用的Go
版本,及系统版本、系统架构?)
//: <> (使用go version
命令查看,期望的结果如:go 1.12, linux/amd64
)
2. 问题描述?
正则不懂为何无法使用,原来在 go 1.17.2 还可以的
通过 正则表达式匹配 域名内容
package main
import (
"bufio"
"fmt"
"io"
"os"
"regexp"
"strings"
)
var (
f_file []string
domain_one_two = [][]string{{"com.cn", "mil.cn", "edu.cn", "net.cn", "gov.cn", "org.cn", "int.cn"}, {"cn", "com", "edu", "gov", "int", "mil", "net", "org", "biz", "info", "pro", "name", "museum", "coop", "aero", "xxx", "idv"}} // 根域名以及国内的二级域名
)
func in(target string, s []string) bool { // 判断是否重复
for _, element := range s {
if target == element {
return true
}
}
return false
}
func main() {
fi, err := os.Open("./url.txt")
if err != nil {
panic(err)
}
r := bufio.NewReader(fi) // 创建 Reader
var file []string
for {
lineBytes, err := r.ReadBytes('\n')
//去掉字符串首尾空白字符,返回字符串
line := strings.TrimSpace(string(lineBytes))
// fmt.Printf("%T %v\n", line, line)
file = append(file, line)
if err == io.EOF {
f_file = file
// fmt.Println(111)
// fmt.Printf("%T %v", f_file, f_file)
// fmt.Println(111)
break
}
// fmt.Println("----------------------------------------")
}
var str_reg string = strings.Join(f_file, "\n")
fmt.Println(str_reg)
re := regexp.MustCompile(`[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?`)
// re := regexp.Compile(`[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?`)
domain_text := re.FindAllStringSubmatch(str_reg, -1) // 莫名奇妙 不能筛选
var domain_return []string
fmt.Printf("%T %v", domain_text, domain_text) //[][]string 类型 筛选结果
// fmt.Printf("%T %v", domain_one_two[0], domain_one_two[0]) //[][]string 类型
var x []string = strings.Split(strings.Join(domain_one_two[1], "\n"), "\n") // 将[][] string 转成 []string
for _, i := range domain_text {
// fmt.Println(i[0])
fmt.Println(strings.Split(i[0], ".")[len(strings.Split(i[0], "."))-1])
if in(strings.Split(i[0], ".")[len(strings.Split(i[0], "."))-1], x) { //判断是否是域名,归属于根域名
fmt.Println(i[0])
domain_return = append(domain_return, i[0])
}
}
}
url.txt 内容
www.baidu.com
123.123.com
aabb.com.com
3. 您期望得到的结果?
��www.baidu.com
123.123.com
aabb.com.com
[][]string []
[www.baidu.com 123.123.com aabb.com.com ]
4. 您实际得到的结果?
��www.baidu.com
123.123.com
aabb.com.com
[][]string []
[]
试试这个: github.com/mvdan/xurls
url.txt 的内容
结果

不是,这需要用到正则吗,直接把每行拿出来加到 slice 中 不行吗。