AI Summary 11.15859.2 golang高效提取文本中的URL链接插件库xurls的使用摘要 2026-08-07
# golang高效提取文本中的URL链接插件库xurls的使用 xurls是一个使用正则表达式从文本中提取URL的Go库,需要Go 1.23或更高版本。 ## 基本使用 以下是xurls的基本使用示例: ```go import "mvdan.cc/xurl
golang高效提取文本中的URL链接插件库xurls的使用
xurls是一个使用正则表达式从文本中提取URL的Go库,需要Go 1.23或更高版本。
基本使用
以下是xurls的基本使用示例:
import "mvdan.cc/xurls/v2"
func main() {
// Relaxed模式可以匹配没有协议头的URL
rxRelaxed := xurls.Relaxed()
rxRelaxed.FindString("Do gophers live in golang.org?") // "golang.org"
rxRelaxed.FindString("This string does not have a URL") // ""
// Strict模式只匹配有协议头的URL
rxStrict := xurls.Strict()
rxStrict.FindAllString("must have scheme: http://foo.com/.", -1) // []string{"http://foo.com/"}
rxStrict.FindAllString("no scheme, no match: foo.com", -1) // []string{}
}
更多功能
由于API基于regexp.Regexp,因此可以使用许多其他方法,例如查找所有匹配项的字节索引。
正则表达式在第一次调用API时编译,任何后续调用都将使用相同的正则表达式指针。
命令行工具xurls
要全局安装该工具:
go install mvdan.cc/xurls/v2/cmd/xurls@latest
使用示例:
$ echo "Do gophers live in http://golang.org?" | xurls
http://golang.org
完整示例
下面是一个完整的示例程序,展示如何使用xurls从文本中提取URL:
package main
import (
"fmt"
"mvdan.cc/xurls/v2"
)
func main() {
text := `
Here are some example URLs:
- https://golang.org
- http://github.com
- www.example.com (only matched by Relaxed)
- contact@example.com (not a URL)
`
// 使用Relaxed模式提取所有URL
relaxed := xurls.Relaxed()
urls := relaxed.FindAllString(text, -1)
fmt.Println("Relaxed模式匹配结果:")
for _, url := range urls {
fmt.Println(url)
}
// 使用Strict模式提取所有URL
strict := xurls.Strict()
urls = strict.FindAllString(text, -1)
fmt.Println("\nStrict模式匹配结果:")
for _, url := range urls {
fmt.Println(url)
}
}
输出结果:
Relaxed模式匹配结果:
https://golang.org
http://github.com
www.example.com
Strict模式匹配结果:
https://golang.org
http://github.com