Golang 分割由指定的表达式分隔的片断

Golang 分割由指定的表达式分隔的片断

正则表达式是一个定义搜索模式的字符序列。Go语言支持正则表达式。正则表达式用于解析、过滤、验证和从大的文本中提取有意义的信息,如日志、其他程序产生的输出等。

Go regexp 中,你可以在 Split() 方法的帮助下,将一个片断分割成由指定表达式分隔的子串。这个方法返回那些表达式匹配之间的子串的片断,计数代表要返回的子串的数量。这个方法是在regexp包中定义的,所以为了访问这个方法,你需要在你的程序中导入regexp包。

语法

func (re *Regexp) Split(str string, m int) []string

这里,如果 m >0 **,那么它最多返回m个子串,最后一个字符串子串不会被分割。如果 **m == 0 , 那么它将返回nil。如果 **m <0 **,那么它将返回所有子串。

例1 :

// Go program to illustrate how to split a
// slice separated by the specified expression
package main
  
import (
    "fmt"
    "regexp"
)
  
// Main function
func main() {
  
    // Splitting the given slice which is
    // separated by the given expression
    // Using Split() method
    m1 := regexp.MustCompile(`e`)
  
    fmt.Println(m1.Split("GeeksforGeeks", -1))
    fmt.Println(m1.Split("GeeksforGeeks", 1))
    fmt.Println(m1.Split("GeeksforGeeks", 0))
    fmt.Println(m1.Split("GeeksforGeeks", 3))
    fmt.Println(m1.Split("GeeksforGeeks", 2))
    fmt.Println()
  
    m2 := regexp.MustCompile(`123`)
    fmt.Println(m2.Split("123Gee123ks123Geek123s", -2))
    fmt.Println(m2.Split("123Gee123ks123Geek123s", 3))
    fmt.Println(m2.Split("123Gee123ks123Geek123s", 0))
    fmt.Println(m2.Split("123Gee123ks123Geek123s", -1))
    fmt.Println(m2.Split("123Gee123ks123Geek123s", 1))
  
}

输出

[G  ksforG  ks]
[GeeksforGeeks]
[]
[G  ksforGeeks]
[G eksforGeeks]

[ Gee ks Geek s]
[ Gee ks123Geek123s]
[]
[ Gee ks Geek s]
[123Gee123ks123Geek123s]

例2 :

// Go program to illustrate how to split a
// slice separated by the specified expression
package main
  
import (
    "fmt"
    "regexp"
)
  
// Main function
func main() {
  
    // Creating and initializing a string
    // Using shorthand declaration
    s := "A vv regular vv  expression v is vv a sequence v"+
      " of vv characters v which define a vv search pattern."
  
    // Splitting the given slice which is
    // separated by the given expression
    // Using Split() method
    m := regexp.MustCompile(`v`)
    res1 := m.Split(s, -1)
    fmt.Println(res1)
  
    res2 := m.Split(s, 1)
    fmt.Println(res2)
  
    res3 := m.Split(s, -0)
    fmt.Println(res3)
  
    res4 := m.Split(s, -4)
    fmt.Println(res4)
  
}

输出

[A    regular     expression   is    a sequence   of    characters   which define a    search pattern.]
[A vv regular vv  expression v is vv a sequence v of vv characters v which define a vv search pattern.]
[]
[A    regular     expression   is    a sequence   of    characters   which define a    search pattern.]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程