正则表达式是定义搜索模式的字符序列。 Go 语言支持正则表达式。正则表达式用于从大文本(如日志、其他程序生成的输出等)中解析、过滤、验证和提取有意义的信息。
在 Go regexp 中,您可以借助FindIndex()方法在给定的字节切片中找到指定正则表达式最左边的索引值。此方法返回一个由两个元素组成的整数切片,它定义了正则表达式给定切片中最左边匹配项的位置,以及像 s[loc[0]:loc[1]] 这样的匹配项。或者如果找不到匹配项,它将返回 nil。这个方法是在regexp包下定义的,所以为了访问这个方法,你需要在你的程序中导入regexp包。
句法:
func (re *Regexp) FindIndex(s []byte) (loc []int)
示例 1:
// Go program to illustrate how to find the index
// value of the regexp in the given slice
package main
import (
"fmt"
"regexp"
)
// Main function
func main() {
// Finding the index value of regexp
// from the given slice of bytes
// Using FindIndex() method
m := regexp.MustCompile(`ek`)
fmt.Println(m.FindIndex([]byte(`GeeksgeeksGeeks, geeks`)))
fmt.Println(m.FindIndex([]byte(`Hello! geeksForGEEKs`)))
fmt.Println(m.FindIndex([]byte(`I like Go language`)))
fmt.Println(m.FindIndex([]byte(`Hello, Welcome`)))
}
输出:
[2 4]
[9 11]
[]
[]
示例 2:
// Go program to illustrate how to find the
// index value of the regexp in the given slice
package main
import (
"fmt"
"regexp"
)
// Main function
func main() {
// Finding regexp from
// the given slice
// Using Find() method
m := regexp.MustCompile(`45`)
res := m.Find([]byte(`I45, like345, Go-234 langu34age`))
if res == nil {
fmt.Println("Nil found")
} else {
// Finding the index value of
// the regexp from the given slice
// Using FindIndex() method
r := m.FindIndex([]byte(`I45, like345, Go-234 langu34age`))
fmt.Printf("Found: %q with index value: %d", res, r)
}
}
输出:
Found: "45" with index value: [1 3]