<16> go regexp正则

regexp包是go中内置的专门处理正则的包

package main
import "bytes"
import "fmt"
import "regexp"
func main() {
    // 正则,返回true 或者 false
    match, _ := regexp.MatchString("p([a-z]+)ch", "peach")
    // true
    fmt.Println(match)
    // 返回regexp struct
    r, _ := regexp.Compile("p([a-z]+)ch")
    // 匹配单个字符串,true
    fmt.Println(r.MatchString("peach"))
    // 返回匹配的字符串 peach
    fmt.Println(r.FindString("peach punch"))
    // 返回匹配的字符串的下标数组 [0 5]
    fmt.Println(r.FindStringIndex("peach punch"))
    // 返回 p([a-z]+)ch 和 ([a-z]+)匹配的字符串,即匹配的字符串和匹配的内容,返回字符串数组 [peach ea]
    fmt.Println(r.FindStringSubmatch("peach punch"))
    // 匹配的字符串和匹配的内容的下标 [0 5 1 3]
    fmt.Println(r.FindStringSubmatchIndex("peach punch"))
    // 字符串里匹配的字符,返回字符串数组,无限制 [peach punch pinch]
    fmt.Println(r.FindAllString("peach punch pinch", -1))
    // [[0 5 1 3] [6 11 7 9] [12 17 13 15]]
    fmt.Println(r.FindAllStringSubmatchIndex(
        "peach punch pinch", -1))
    // 字符串里匹配的字符,返回字符串数组, 限制2个[peach punch]
    fmt.Println(r.FindAllString("peach punch pinch", 2))
    // 字节匹配 true
    fmt.Println(r.Match([]byte("peach")))
    // 将匹配到的字符串进行处理
    r = regexp.MustCompile("p([a-z]+)ch")
    fmt.Println(r)// p([a-z]+)ch
    // a <fruit>
    fmt.Println(r.ReplaceAllString("a peach", "<fruit>"))
    //  带函数的匹配处理 a PEACH
    in := []byte("a peach")
    out := r.ReplaceAllFunc(in, bytes.ToUpper)
    fmt.Println(string(out))
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值