为了账号安全,请及时绑定邮箱和手机立即绑定

使用正则表达式从 aws s3 url 中提取存储桶名称

使用正则表达式从 aws s3 url 中提取存储桶名称

Go
智慧大石 2022-07-11 15:21:34
我想从 AWS s3 URL 中提取存储桶名称。URL 可以有多种格式。以下是支持的 s3 URL 的正则表达式列表:[a-z0-9.-]+\.s3\.amazonaws\.com[a-z0-9.-]+\.s3-[a-z0-9-]+\.amazonaws\.com[a-z0-9.-]+\.s3\.[a-z0-9-]+\.amazonaws\.com[a-z0-9.-]+\.s3-website[.-](eu|ap|us|ca|sa|cn)例子:bucket-name.s3.us-west-2.amazonaws.combucket.name.s3.us-west-2.amazonaws.combucket-name.s3-us-west-2.amazonaws.combucket.name.s3-us-west-2.amazonaws.combucket-name.s3.amazonaws.combucket.name.s3.amazonaws.com我想要一个可以bucket-name从GoLang.
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

这会起作用:

^(.+)(?:\.s3[-.].*)$

翻译:

从字符串的开头找到通向.s3.or的所有内容,.s3-并将其捕获到组 #1 中。

您的存储桶名称将位于$1.

请参阅下面的 regex101 链接并使用代码生成器查看 Golang 示例。

https://regex101.com/r/LRvA5F/1


查看完整回答
反对 回复 2022-07-11
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

利用


^(.*?)\.s3\b

见证明。


解释


--------------------------------------------------------------------------------

  ^                        the beginning of the string

--------------------------------------------------------------------------------

  (                        group and capture to \1:

--------------------------------------------------------------------------------

    .*?                      any character except \n (0 or more times

                             (matching the least amount possible))

--------------------------------------------------------------------------------

  )                        end of \1

--------------------------------------------------------------------------------

  \.                       '.'

--------------------------------------------------------------------------------

  s3                       's3'

--------------------------------------------------------------------------------

  \b                       the boundary between a word char (\w) and

                           something that is not a word char

去代码示例:


package main


import (

    "fmt"

    "regexp"

)


func main() {

    r := regexp.MustCompile(`^(.*?)\.s3\b`)

    str := "bucket-name.s3.us-west-2.amazonaws.com"

    match := r.FindStringSubmatch(str)

        fmt.Println(match[1])

}


查看完整回答
反对 回复 2022-07-11
  • 2 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信