/**
* @Author: wsp
* @Date: 2018/1/15 10:58
* @Description:
*/
package regexpStudy
import (
"bytes"
"fmt"
"regexp"
)
func RegexpStudy1() {
var result interface{}
var err error
result, err = regexp.MatchString("w[0-9]*sp", "wsp")
ErrHandler(err)
fmt.Println("匹配结果:", result)
}
func RegexpStudy2() {
r, err := regexp.Compile("u([a-z]+)ledger")
ErrHandler(err)
// 判断是否匹配
fmt.Println(r.MatchString("uniledger"))
// 匹配第一次出现的字符串
fmt.Println(r.FindString("uniledger uwspledger"))
// 匹配第一次出现的字符串开始及结束索引
fmt.Println(r.FindStringIndex("uniledger uwspledger"))
// 返回第一次匹配的字符串,全局匹配及局部匹配的内容
fmt.Println(r.FindStringSubmatch("uniledger uwspledger"))
// 返回第一次匹配的字符串,全局匹配及局部匹配的内容的开始及结束的索引
fmt.Println(r.FindStringSubmatchIndex("uniledger uwspledger"))
// 返回字符串所有匹配的内容,不仅仅首次匹配项 n<0 返回所有匹配项,n>0 返回n个匹配项
fmt.Println(r.FindAllString("uniledger uwspledger uniledger uwspledger", -1))
// 返回字符串所有匹配的内容,不仅仅首次匹配项 n<0 返回所有匹配项,n>0 返回n个匹配项的索引
fmt.Println(r.FindAllStringIndex("uniledger uwspledger uniledger uwspledger", -1))
// 返回[]byte数组所有匹配的内容,不仅仅首次匹配项 n<0 返回所有匹配项,n>0 返回n个匹配项的索引
fmt.Println(r.FindAllIndex([]byte("uniledger uwspledger uniledger uwspledger"), -1))
r = regexp.MustCompile("p([a-z]+)ch")
fmt.Println(r)
// 替换匹配的字符串的内容
fmt.Println(r.ReplaceAllString("a peach", "<fruit>"))
// 将匹配的元素 传递给一个函数
in := []byte("a peach")
out := r.ReplaceAllFunc(in, bytes.ToUpper)
fmt.Println(string(out))
}
/**
* @Author: wsp
* @Date: 10:27 2018/1/12
* @Description: 错误处理
*/
func ErrHandler(err error) {
if err != nil {
panic(err)
}
}
/**
* @Author: wsp
* @Date: 2018/1/15 10:58
* @Description:
*/
package regexpStudy
import "testing"
func TestRegexpStudy1(t *testing.T) {
RegexpStudy1()
}
func TestRegexpStudy2(t *testing.T) {
RegexpStudy2()
}
true
punch
[0 5]
[punch un]
[0 5 1 3]
[peach punch pinch]
[[0 5] [6 11] [12 17]]
[[0 5] [6 11] [12 17]]
p([a-z]+)ch
a <fruit>
a PEACH