我有/components/component[name=fan/10 index=55]/cpu
我想要一个regex
给我fan/10
和55
的东西。
我尝试了类似=(.*)\s
之类的方法,但是没有用。但是我猜想它必须使用捕获组(())来完成?
答案 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]]