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