Golang - extract links using regex

我需要得到所有的文本链接,在特定的域example.de使用正则表达式在围棋

以下是应提取的所有可能链接:

https://example.de 
https://example.de/
https://example.de/home
https://example.de/home/
https://example.de/home some text that should not be extracted
https://abc.example.de
https://abc.example.de/
https://abc.example.de/home
https://abc.example.de/home
https://abc.example.de/home some text that should not be extracted

我已经试过了

我用这个网站判断我的正则表达式是否正确:https://regex101.com/r/ohxUcG/2

  • https?://*.+example.de*.+在表达式https://abc.example.de/a1b2c3 dsadsa中无法将整个文本发送到\n,而不是没有dsadsahttps://abc.example.de/a1b2c3
  • https?://*.+example.de*.+\s(\w+)$这会得到只以空间终止的链接,但有时链接可以以\n\t等终止.

可能有用的资源

推荐答案

你可以用

(?:https?://)?(?:[^/.]+\.)*\bexample\.de\b(?:/[^/\s]+)*/?

regex demo.Details:

  • (?:https?://)?-可选的http://https://字符串
  • (?:[^/.]+\.)*-一个或多个字符的零或多个序列,而不是/.个字符,然后是.个字符
  • \bexample\.de\b-一个单词example.de
  • (?:/[^/\s]+)*-零次或多次重复/,然后重复除空格和/以外的一个或多个字符
  • /?-可选的/字符.

Go相关问答推荐

Go 导入范围查找 protobuf 类型

如何在眼镜蛇(golang)中将标志作为参数传递?

有没有办法在一个 goroutine 返回后延迟后取消上下文?

GOLANG 如何使用 http.FileServer 从模板目录加载某个 html 文件

Golang 有类似 C++ 的 decltype 的东西吗?

Dynamodb.ScanInput - 不能使用“expr.Names()”(类型 map[string]*string)作为类型 map[string]string

如何从 docker-compose 命令运行 2 个不同的命令:

不理解切片和指针

Go Flag 用法 描述 包含 Word 值

有没有办法在golang中映射一组对象?

try 创建新的 etcdv3 客户端时出现“pc error: code = Unavailable desc = error reading from server: EOF”

带有 *s3.S3 对象的 Golang 单元测试

在 etcd 键值存储中禁用历史记录

在 Go 泛型中,如何对联合约束中的类型使用通用方法?

为什么在 unsafe.Sizeof() 中取消引用 nil 指针不会导致panic ?

从 Go 1.13 升级后使用 Go 1.14 构建时,是什么导致了关于“previous declaration at”的运行时内部错误?

在 sync.Once 的上下文中,“hot path”是什么意思?

如何初始化一次 zap 记录器并在其他 Go 文件中重用它?

如何使用 go modules 删除已安装的包

调试 Go 依赖包?