在lang匹配期间的正则表达式和 - 和A-z 0-9

时间:2018-03-13 12:02:51

标签: regex go amazon-s3

我正在尝试在Go中使用正则表达式匹配s3存储桶网址。

到目前为止我已经

https://s3.amazonaws.com/(.+?)/",
        "http://s3.amazonaws.com/(.+?)/",
        "//s3-us-east-2.amazonaws.com/(.+?)/",
        "//s3-us-west-1.amazonaws.com/(.+?)/",
        "//s3-us-west-2.amazonaws.com/(.+?)/",
        "//s3.ca-central-1.amazonaws.com/(.+?)/",
        "//s3-ap-south-1.amazonaws.com/(.+?)/",
        "//s3-ap-northeast-2.amazonaws.com/(.+?)/",
        "//s3-ap-southeast-1.amazonaws.com/(.+?)/",
        "//s3-ap-northeast-1.amazonaws.com/(.+?)/",
        "//s3-eu-central-1.amazonaws.com/(.+?)/",
        "//s3-eu-west-1.amazonaws.com/(.+?)/",
        "//s3-eu-west-2.amazonaws.com/(.+?)/",
        "//s3-eu-west-3.amazonaws.com/(.+?)/",
        "//s3.sa-east-1.amazonaws.com/(.+?)/",
        "https://(.+?).s3.amazonaws.com",
        "//s3.amazonaws.com/([A-z0-9-]+)",
        "//s3-ap-southeast-2.amazonaws.com/(.+?)/",

但这太过分了,所以我在看

//s3.amazonaws.com/([A-z0-9-]+)

但是这个错过了。但是当我这么做的时候// @3.zzonaws.com/([A-z0-9-]\.+)它与找到的任何字符串都不匹配。

我目前正在尝试将其与

相匹配

//s3.amazonaws.com/bucket.name///s3.amazonaws.com/bucket-name-here

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

在正则表达式中,您使用[A-z0-9-]。请注意[A-z]中的[A-Za-z] is different

要匹配文字点,您可以将其转义:\.

此正则表达式([A-z0-9-]\.+)中的此部分//s3.amazonaws.com/([A-z0-9-]\.+)将匹配您的角色类一次,然后匹配一次或多次点j.....

要完全匹配示例中的2个URL,可以在字符类中添加一个点,在末尾添加一个可选的正斜杠,可以省略捕获组(字符类([])周围的括号)如果您只想匹配完整的网址而不是使用捕获的组本身中的数据进行进一步使用。

//s3\.amazonaws\.com/[.A-z0-9-]+/?

查看示例中的其他网址,也许这个正则表达式可以帮助您,您可以根据您的进一步要求进行调整:

(?:https?:)?//[A-z0-9.-]+\.amazonaws\.com(?:/(?:[A-z0-9.-]*/?))?

答案 1 :(得分:0)

在字符类中添加点:

//s3.amazonaws.com/([-A-z0-9.]+)

Demo