【问题标题】:Substitute a variable in regexp.MatchString method在 regexp.MatchString 方法中替换变量
【发布时间】:2020-02-04 00:37:14
【问题描述】:

我有一个需要创建和查找特定正则表达式的 golang 脚本。要查找的字符串,定义为常量。

const nameRegex = "service-route"

我可以在某些地方使用这个变量。

rb := &compute.Route{
        Name:           fmt.Sprintf("%s-%s", nameRegex, generateCode(host))

我也想使用相同的字符串来查找。

基本上我有类似的东西

matched, _ := regexp.MatchString("^service-route-.*", route.Name)
    if matched {

做类似的事情

matched, _ := regexp.MatchString("^%s-.*" , nameRegex, route.Name)

因为函数 MatchString 只需要 1 个参数,所以不起作用。

我尝试了类似的东西

myRegex , err := regexp.Compile("%s", nameRegex)
myRegex.MatchString(route.Name)

那也行不通。

甚至可以使用变量来匹配正则表达式吗?

【问题讨论】:

    标签: go


    【解决方案1】:

    MatchString 的第一个参数是一个字符串。所以使用 Sprintf(就像你之前所做的那样)来生成模式字符串,如下所示:

    regexp.MatchString(fmt.Sprintf("^%s-.*", nameRegex), route.Name)
    

    或使用连接构造字符串:

    regexp.MatchString("^" + nameRegex + "-.*", route.Name)
    

    这似乎是一次性检查,因此不需要预编译正则表达式。

    【讨论】:

      【解决方案2】:

      这是可能的。这里是游乐场:https://play.golang.org/p/hc9eMcSzGQC

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多