go 正则表达式


正则表达式基本和 python 的一致

regexp 标准库文档:https://studygolang.com/pkgdoc

将 正则表达式字符串 转义为普通字符串:
func QuoteMeta(s string) string

例如,QuoteMeta('a.b')会返回'a\.b'

检测字符串中是否含有匹配在 pattern 的子序列
func Match(pattern string, b []byte) (matched bool, err error)
func MatchString(pattern string, s string) (matched bool, err error)
func MatchReader(pattern string, r io.RuneReader) (matched bool, err error)

这a个函数类似,一个匹配对象是二进制切片,一个匹配对象是字符串,一个匹配对象是 io.RuneReader,使用举例:

matched, err := regexp.MatchString("foo.*", "seafood")
fmt.Println(matched, err)
matched, err = regexp.MatchString("bar.*", "seafood")
fmt.Println(matched, err)
matched, err = regexp.MatchString("a(b", "seafood")
fmt.Println(matched, err)
fmt.Println("--------------------------------------")

 matched, err = regexp.Match("foo.*", []byte("seafood"))
 fmt.Println(matched, err)
 matched, err = regexp.Match("bar.*", []byte("seafood"))
 fmt.Println(matched, err)
 matched, err = regexp.Match("a(b", []byte("seafood"))
 fmt.Println(matched, err)

 fmt.Println("--------------------------------------")
 f, err := os.Open("/home/hongyu/go/src/test/regexp/matchreader.txt")
 if err != nil {
   
  fmt.Println("open file err", err)
 }
 rr := bufio.NewReader(f)
 defer f.Close()

 matched, err = regexp.MatchReader("foo.*", rr)
 fmt.Println(matched, err)
 matched, err = regexp.MatchReader("bar.*", rr)
 fmt.Println(matched, err)
 matched, err = regexp.MatchReader("a(b", rr)
 fmt.Println(matched, err)
/* 输出
true <nil>
false <nil>
false error parsing regexp: missing closing ): `a(b`
*/

正则表达式对象 Regexp

type Regexp struct {
   
    // 内含隐藏或非导出字段
}

Regexp 表示一个编译好的正则表达式

函数 Complie
func Compile(expr string) (*Regexp, error)

Compile 用来解析正则表达式 expr 是否合法,如果合法,则返回一个 Regexp 对象

函数 CompliePOSIX
func CompilePOSIX(expr string) (*Regexp, error
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值