什么是正则表达式,以匹配=,空格后的所有匹配项?

时间:2019-07-15 11:00:59

标签: regex go

我有/components/component[name=fan/10 index=55]/cpu

我想要一个regex给我fan/1055的东西。

我尝试了类似=(.*)\s之类的方法,但是没有用。但是我猜想它必须使用捕获组(())来完成?

2 个答案:

答案 0 :(得分:1)

您可以使用

select split_part(split_part(col, ')', 1), '(', 2)::int as a,
       split_part(split_part(col, ')', 2), '(', 2)::int as f,
       split_part(split_part(col, ')', 3), '(', 2)::int as d

请参见regex demo

详细信息

  • =([^\]\s]+) -等号
  • =-捕获组1:([^\]\s]+)和空格以外的任何1个或多个字符。

GO demo

]

输出:

package main

import (
    "fmt"
    "regexp"
)


func main() {
    s := "/components/component[name=fan/10 index=55]/cpu"
    rx := regexp.MustCompile(`=([^\]\s]+)`)
    matches := rx.FindAllStringSubmatch(s, -1)
    for _, v := range matches {
        fmt.Println(v[1])   
    }
}

答案 1 :(得分:1)

您可以尝试使用类似这样的内容:

s := "/components/component[name=fan/10 index=55]/cpu"
re := regexp.MustCompile(`=([^\s\]]*)`)
matches := re.FindAllStringSubmatch(s, -1)
fmt.Println(matches)

结果将是:

[[=fan/10 fan/10] [=55 55]]