Golang regexp 包
regexp
包在Go语言中提供了正则表达式的处理功能。以下是一些使用regexp
包的常见示例:
- 匹配字符串:
package main
import (
"fmt"
"regexp"
)
func main() {
match, _ := regexp.MatchString("p([a-z]+)ch", "peach")
fmt.Println(match)
}
在这个例子中,regexp.MatchString
函数用于检查字符串"peach"
是否匹配正则表达式"p([a-z]+)ch"
。如果匹配,match
将为true
。
- 用于查找和替换字符串:
package main
import (
"fmt"
"regexp"
)
func main() {
re, _ := regexp.Compile("p([a-z]+)ch")
fmt.Println(re.ReplaceAllString("peach punch", "[$`$1`$']"))
}
在这个例子中,regexp.Compile
函数用于编译正则表达式,ReplaceAllString
方法用于在整个字符串中查找匹配正则表达式的部分,并用指定的字符串进行替换。
- 获取匹配的子字符串:
package main
import (
"fmt"
"regexp"
)
func main() {
re, _ := regexp.Compile("p([a-z]+)ch")
s := "peach punch"
fmt.Println(re.FindStringSubmatch(s)) // 输出: [peach p]
}
在这个例子中,regexp.Compile
函数用于编译正则表达式,FindStringSubmatch
方法用于查找第一个匹配的子字符串,并返回一个字符串切片,其中包含完全匹配的文本以及按括号分隔的子匹配项。
- 获取所有匹配的子字符串:
package main
import (
"fmt"
"regexp"
)
func main() {
re, _ := regexp.Compile("p([a-z]+)ch")
s := "peach punch"
fmt.Println(re.FindAllStringSubmatch(s, -1)) // 输出: [[peach p] [unch p]]
}
在这个例子中,regexp.Compile
函数用于编译正则表达式,FindAllStringSubmatch
方法用于查找所有匹配的子字符串,并返回一个字符串切片,其中包含每一个匹配的文本以及按括号分隔的子匹配项。
- 获取匹配的位置:
package main
import (
"fmt"
"regexp"
)
func main() {
re, _ := regexp.Compile("p([a-z]+)ch")
s := "peach punch"
fmt.Println(re.FindStringIndex(s)) // 输出: [0 5]
}
在这个例子中,regexp.Compile
函数用于编译正则表达式,FindStringIndex
方法用于查找第一个匹配的位置,并返回一个两元素的整数切片,其中包含匹配的开始和结束位置。
- 获取所有匹配的位置:
package main
import (
"fmt"
"regexp"
)
func main() {
re, _ := regexp.Compile("p([a-z]+)ch")
s := "peach punch"
fmt.Println(re.FindAllIndexString(s, -1
评论已关闭