📌  相关文章
📜  高朗 |查找字符串中存在的正则表达式的索引

📅  最后修改于: 2021-10-24 13:31:31             🧑  作者: Mango

正则表达式是定义搜索模式的字符序列。 Go 语言支持正则表达式。正则表达式用于从大文本(如日志、其他程序生成的输出等)中解析、过滤、验证和提取有意义的信息。
在 Go regexp 中,您可以借助FindStringIndex()方法在给定字符串查找指定正则表达式最左边的索引值。此方法返回一个由两个元素组成的整数切片,它定义了正则表达式的给定字符串中最左边匹配项的位置,以及类似 str[loc[0]:loc[1]] 的匹配项。或者如果找不到匹配项,它将返回 nil。这个方法是在regexp包下定义的,所以为了访问这个方法,你需要在你的程序中导入regexp包。

句法:

func (re *Regexp) FindStringIndex(str string) (loc []int)

示例 1:

// Go program to illustrate how to find the
// index value of the regexp in the given string
  
package main
  
import (
    "fmt"
    "regexp"
)
  
// Main function
func main() {
  
    // Finding index regexp 
    // from the given string
    // Using FindStringIndex() method
    m := regexp.MustCompile(`ee`)
  
    fmt.Println(m.FindStringIndex("GeeksgeeksGeeks, geeks"))
    fmt.Println(m.FindStringIndex("Hello! geeksForGEEKs"))
    fmt.Println(m.FindStringIndex("I like Go language"))
    fmt.Println(m.FindStringIndex("Hello, Welcome"))
  
}

输出:

[1 3]
[8 10]
[]
[]

示例 2:

// Go program to illustrate how to find the index
// value of the regexp in the given string
package main
  
import (
    "fmt"
    "regexp"
)
  
// Main function
func main() {
  
    // Finding the regexp 
    // from the given string
    // Using Find() method
    m := regexp.MustCompile(`345`)
    res := m.FindString("I45, like345, Go-234 langu34age")
  
    // Finding the index value of regexp in the given string
    // UsingFindStringIndex() method
    r := m.FindStringIndex("I45, like345, Go-234 langu34age")
    fmt.Printf("Found: %s with index value: %d", res, r)
}

输出:

Found: 345 with index value: [9 12]