Golang-Pit-01-正则表达式

常用的正则表达式

package main

import (
    "fmt"
    "regexp"
)

func main() {
    match, _ := regexp.MatchString("p([a-z]+)ch", "peach")
    fmt.Println(match)

    r := regexp.MustCompile("p([a-z]+)ch")
    fmt.Println(r.MatchString("peach"))
    fmt.Println(r.FindString("peach punch"))
    fmt.Println(r.FindStringIndex("peach punch"))
    fmt.Println(r.FindStringSubmatch("peach punch"))
    fmt.Println(r.FindStringSubmatchIndex("peach punch"))
    fmt.Println(r.FindAllString("peach punch pinch", -1))
    fmt.Println(r.FindAllStringIndex("peach punch pinch", -1))
    fmt.Println(r.FindAllString("peach punch pinch", 2))
}
/*
输出:
true
true
peach
[0 5]
[peach ea]
[0 5 1 3]
[peach punch pinch]
[[0 5] [6 11] [12 17]]
[peach punch]
*/

匹配特殊字符,转义

需要匹配特殊字符的时候,其他语言通常用\.\*这样的转义方法,

但是在go语言中却行不通。

参考链接:http://stackoverflow.com/questions/6770898/unknown-escape-sequence-error-in-go

需要使用`符号括起来

忽略大小写,换行

package main

import (
	"fmt"
	"regexp"
)

func main() {
	r := regexp.MustCompile(`(?s)fo.*zzo`)
	const s = `
foo
bar
zzo`
	p := r.FindAllString(s, -1)
	fmt.Println(p[0])
	fmt.Println(r.FindAllString(s, -1))
}

参考链接:

  1. http://stackoverflow.com/questions/15326421/how-do-i-do-a-case-insensitive-regular-expression-in-go
  2. https://tip.golang.org/pkg/regexp/syntax/

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部