regex - 正则表达式的问题。nil 切片和 FindStringSubmatch
问题描述
我正在尝试正则表达式模式:
random-text (800)
我正在做这样的事情:
func main() {
rando := "random-text (800)"
parsedThing := regexp.MustCompile(`\((.*?)\)`)
match := parsedThing.FindStringSubmatch(rando)
if match[1] == "" {
fmt.Println("do a thing")
}
if match[1] != "" {
fmt.Println("do a thing")
}
}
我只想捕获括号中的内容,但FindString
正在解析 ()。我也试过FindStringSubmatch
了,这很好,我可以在切片中指定捕获组,但是我的单元测试中有一个错误,切片是 . 我需要测试一个空字符串,因为这是可能发生的事情。有没有更好的正则表达式,我可以使用它只会在括号内捕获?或者有没有更好的方法来处理 nil 切片的错误。
解决方案
我通常nil
根据文档进行比较:
返回值
nil
表示不匹配。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\((.+)\)`)
find := re.FindStringSubmatch("random-text (800)")
if find != nil {
fmt.Println(find[1] == "800")
}
}