美文网首页
Golang正则表达式

Golang正则表达式

作者: 31627a633847 | 来源:发表于2020-05-21 13:41 被阅读0次

语法规则

字符类匹配表达式
语法 说明 示例 匹配结果
一般 匹配本身 abc abc
. 匹配任意除换行符"\n"外的字符 a.c abc
\ 转义字符,使后一个字符改变原来的意思 a\.c a.c
[...] 字符集(字符类),对应的位置可以是字符集中任意字符[abc]。也可以给出范围[a-c],第一个字符如果是 ^ 则表示取反,如 [^abc] 表示除了abc之外的其他字符。 a[bcd]e abe,ace,ade
\d 数字:[0-9] a\dc a1c
\D 非数字:[^\d] a\Dc abc
\s 空白字符:[<空格>\t\r\n\f\v] a\sc a c
\S 非空白字符:[^\s] a\Sc abc
\w 单词字符:[A-Za-z0-9] a\wc abc
\W 非单词字符:[^\w] a\Wc a c
数量词表达式
语法 说明 示例 匹配结果
* 匹配前一个字符 0 或无限次 abc* abc,ab,abccc
+ 匹配前一个字符 1 次或无限次 abc+ abc,abcc
? 匹配前一个字符 0 次或 1 次 abc? abc,ab
{m} 匹配前一个字符 m 次 ab{2}c abbc
{m,n} 匹配前一个字符 m 至 n 次,m 和 n 可以省略,若省略 m,则匹配 0 至 n 次;若省略 n,则匹配 m 至无限次 ab{1,2}c abc,abbc
边界匹配
语法 说明 示例 匹配结果
^ 匹配字符串开头,在多行模式中匹配每一行的开头 ^abc abc
$ 匹配字符串末尾,在多行模式中匹配每一行的末尾 abc$ abc
\A 仅匹配字符串开头 \Aabc abc
\Z 仅匹配字符串末尾 abc\Z abc
\b 匹配 \w 和 \W 之间 a\b!bc a!bc
\B [^\b] a\Bbc abc
分组
语法 说明 示例 匹配结果
代表左右表达式任意匹配一个,优先匹配左边的表达式 abc|def abc 或者 def
(...) 括起来的表达式将作为分组,分组将作为一个整体,可以后接数量词 (abc){2} abcabc

验证

const EmailReg  = `^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$`
var EmailRegCompile  *regexp.Regexp = regexp.MustCompile(EmailReg)
// MatchString
func IsEmail(email string) bool {
    if email != "" {
        if isOk, _ := regexp.MatchString(EmailReg, email); isOk {
            return true
        }
    }
    return false
}
//Match
func IsEmailV2(email string) bool {
    if email != "" {
        if isOk, _ := regexp.Match(EmailReg, []byte(email)); isOk {
            return true
        }
    }
    return false
}
//MatchReader
func IsEmailV3(email string) bool {
    if email != "" {
        if isOk, _ := regexp.MatchReader(EmailReg, strings.NewReader(email)); isOk {
            return true
        }
    }
    return false
}
//MustCompile
func IsEmailV5(email string) bool {
    //return EmailRegComplie.Match([]byte(email))
    //return EmailRegComplie.MatchReader(strings.NewReader(email))
    return EmailRegCompile.MatchString(email)
}

查找

const NumberReg = `[0-9]*`
var NumberRegCompile *regexp.Regexp = regexp.MustCompile(NumberReg)
const HrefReg   = `<a href="(https://so.gushiwen.org/gushi/[a-z]+\.aspx)" target="_blank"[^>]*>([^<]+)</a>`
var HrefRegCompile   *regexp.Regexp = regexp.MustCompile(HrefReg)

//FindString|Find : 查找第一个满足条件的值
func FindString(str string) string {
  //return string(NumberRegCompile.Find([]byte(str)))
  return NumberRegCompile.FindString(str)
}
//FindAllString :查找所有满足条件的值
func FindAll(str string) []string {
    return NumberRegCompile.FindAllString(str, -1)
}
//FindAll:查找所有满足条件的值
func FindAllByte(str string) []string {
    var strSlice []string
    matchs := NumberRegCompile.FindAll([]byte(str), -1)
    for _, match := range matchs {
        strSlice = append(strSlice, string(match))
    }
    return strSlice
}
//FindAllStringSubmatch
func FindAllStringSubMatch(str string) [][]string {
    return HrefRegCompile.FindAllStringSubmatch(str, -1)
}

替换

const (
    NumberReg = `[0-9]*`
    StringReg = `[a-z][A-Z]*`
)
var (
    NumberRegCompile *regexp.Regexp = regexp.MustCompile(NumberReg)
    StringRegCompile *regexp.Regexp = regexp.MustCompile(StringReg)
)

//ReplaceAllString|ReplaceAll :把src满足条件的字串替换为repl
func ReplaceAll(src, repl string) string {
  //return NumberRegCompile.ReplaceAllString(src, repl)
    return string(NumberRegCompile.ReplaceAll([]byte(src), []byte(repl)))
}
//ReplaceAllStringFunc|ReplaceAllFunc :把src满足条件的字串用函数处理
func ReplaceAllStringFunc(src string) string {
    //return string(NumberRegCompile.ReplaceAllFunc([]byte(src), bytes.ToUpper))
    return NumberRegCompile.ReplaceAllStringFunc(src, strings.ToUpper)
}

相关文章

  • golang 正则正则表达式反向查询

    golang 正则正则表达式反向查询 基本上所有的语言都有正则表达式,golang也不例外。golang原生使用r...

  • 004-golang 正则表达式的使用

    获取包名 参考链接 golang 正则表达式 基础知识 - Golang 中的正则表达式 线上正则表达式测试工具

  • 正则表达式

    菜鸟教程正则表达式教程RE2正则表达式(golang执行的是RE2标准的正则表达式)go语言中单行模式的用法可以查...

  • golang实现人民币小写转大写

    使用golang的正则表达式实现人民币小写转大写,代码如下: 上面代码执行结果如下(可以使用ConvertNumT...

  • golang 正则表达式

    Output: 1.MustCompile(...) VS Compile(...) MustComile实际上调...

  • Golang正则表达式

    语法规则 字符类匹配表达式 语法说明示例匹配结果一般匹配本身abcabc.匹配任意除换行符"\n"外的字符a.ca...

  • Golang 正则表达式

    参考golang之正则校验golang正则使用总结

  • Golang 反射实现依赖注入

    Golang 反射实现依赖注入 Coding/Golang #Golang #Golang/reflect 依赖注...

  • golang学习资源

    • golang官方文档• golang官方指南• golang官方指南目录版• 怎样编写golang代码• 地道...

  • 01 mac-go开发环境搭建

    安装golang安装包 Golang 官网 : https://golang.org/Golang 中文网 htt...

网友评论

      本文标题:Golang正则表达式

      本文链接:https://www.haomeiwen.com/subject/dnogohtx.html