1 概述

正则表达式,又称规则表达式,Regular Expression,在代码中常简写为 regex、regexp 或 RE。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 Perl 语言的正则表达式功能非常强大,很多语言设计正则式支持的时候都参考Perl的正则表达式。因此常用的表达式语法也是 Perl 兼容正则表达式。

Go 语言中使用包 regexp 提供对正则表达式的支持。本文说明 regexp 中常用的正则处理方法。

2 获取正则对象

通过编译正则表达式,可以得到正则操作对象,用于完成正则的相关处理: 函数:

regexp.Compile(expr string) (*Regexp, error)

regexp.MustCompile(str string) *Regexp

reg,err := regexp.Compile(`\d+`)

reg := regexp.MustCompile(`\d+`)

3 匹配检测

函数:

func (re *Regexp) MatchString(s string) bool

func (re *Regexp) Match(b []byte) bool

演示字符串的匹配:

text := "Hello Gopher,Hello 韩忠康"

reg := regexp.MustCompile(`\w+`)

fmt.Println(reg.MatchString(text))

// true

4 查找

函数:

func (re *Regexp) FindString(s string) string ,查找匹配模式的字符串,返回左侧第一个匹配的结果。

func (re *Regexp) FindAllString(s string, n int) []string ,用来查找匹配模式的字符串,返回多个匹配的结果,n 用于限定查找数量,-1不限制。

func (re *Regexp) FindAll(b []byte, n int) [][]byte ,用于在 []byte 中查找,返回 [][]byte 。

匹配全部结果演示为:

text := "Hello Gopher,Hello 韩忠康"

reg := regexp.MustCompile(`\w+`)

fmt.Println(reg.FindAllString(text))

// [Hello Gopher Hello]

5 查找匹配位置

以下函数用于获取匹配正则子字符串的位置:

func (re *Regexp) FindStringIndex(s string) (loc []int)

func (re *Regexp) FindIndex(b []byte) (loc []int)

func (re *Regexp) FindAllStringIndex(s string, n int) [][]int

演示查找字符串最左侧匹配位置:

text := "Hello Gopher,Hello 韩忠康"

reg := regexp.MustCompile("llo")

fmt.Println(reg.FindStringIndex(text))

// [2 5]

6 查找匹配子模式

以下函数可以查找子模式,或查找子模式的位置:

func (re *Regexp) FindStringSubmatch(s string) []string

func (re *Regexp) FindAllStringSubmatch(s string, n int) [][]string

func (re *Regexp) FindStringSubmatchIndex(s string) []int

演示匹配全部子字符串如下:

re := regexp.MustCompile("Go(\w+)")

fmt.Println(re.FindAllStringSubmatch("Hello Gopher,Hello GoLang", -1))

// [["Gophoer" "phoer"], ["GoLang", "Lang"]]

7 替换

函数:

func (re *Regexp) ReplaceAllString(src, repl string) string

func (re *Regexp) ReplaceAll(src, repl []byte) []byte

re := regexp.MustCompile("Go(\w+)")

fmt.Println(re.ReplaceAllString("Hello Gopher,Hello GoLang", "Hank$1"))

// Hello Hankpher,Hello HankLang

8 分割

函数:

func (re *Regexp) Split(s string, n int) []string ,使用正则分割字符串 s ,返回字符串切片。n 控制分割的片数,-1为不限制。

reg := regexp.MustCompile("[\s,]")

fmt.Println(reg.Split("Hello Gopher,Hello GoLang", -1))

// [Hello Gopher Hello GoLang]

除了以上列举的较为常用的方法外,请参考 godoc -http=:8088 获取更全的信息。

完! 原文出自: 小韩说课 微信关注:小韩说课

韩忠康mysql正则表达式_Go语言中正则表达式的处理相关推荐

  1. python正则表达式教程_Python中正则表达式的巧妙使用一文包你必掌握正则,

    Python中正则表达式的巧妙使用一文包你必掌握正则, 前言 正则表达式就是从字符串中发现规律,并通过"抽象"的符号表达出来.打个比方,对于2,5,10,17,26,37这样的数字 ...

  2. java正则表达式类_java中正则表达式之Pattern类与Matcher类

    java中正则表达式之Pattern类与Matcher类 ======================================================================= ...

  3. go语言字符串换行_Go语言中的字符串处理方法示例详解

    1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(" ...

  4. go语言复数包_Go语言中包的风格指南

    Go 语言也有自己的命名与代码组织规则.漂亮的代码,布局清晰.易读易懂,就像是设计严谨的 API 一样.拿到代码,用户首先看到和接触的就是布局.命名还有包的结构. 这篇文章不是为了给大家设立硬性的规定 ...

  5. go http 处理w.write 错误_Go语言中的异常和错误处理简介

    女主宣言 异常和错误处理在保证程序的鲁棒性方面起到了至关重要的作用.C++.Java.Python中的异常和错误处理都是比较类似的,可以用try-catch逻辑操作,但是Go中的异常处理却有别于以上三 ...

  6. mysql 大小端_go语言中大小端模式的个人理解

    大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据 当作字符串的存储顺序处理.地址由小向大增加,而数据从高位往低位放:这和我们的阅读习 ...

  7. go语言入门经典_Go 语言中的 gRPC 基础入门

    01 为什么使用 gRPC? 借助 gRPC,我们可以在 .proto 文件中一次定义我们的服务,并以 gRPC 支持的任何语言生成客户端和服务器代码,无论是在大型数据中心内的服务器,还是在个人的电脑 ...

  8. golang mysql 超时_Go语言channel超时机制

    Go语言没有提供直接的超时处理机制,所谓超时可以理解为当我们上网浏览一些网站时,如果一段时间之后不作操作,就需要重新登录. 那么我们应该如何实现这一功能呢,这时就可以使用 select 来设置超时. ...

  9. golang的int64排序_go语言中的排序讲解

    go语言的排序思路和 c 和 c++ 有些差别. c 默认是对数组进行排序, c++ 是对一个序列进行排序, go 则更宽泛一些,待排序的可以是任何对象, 虽然很多情况下是一个 slice (分片, ...

  10. go语言mysql视频_Go语言实战流媒体视频网站

    第1章 课程介绍 介绍这门课程大纲,技术堆栈以及环境 1-1 prestudy 1-2 课程介绍及知识要点预习 第2章 一个例子了解golang工具链 通过一个简单的webservice具体从gola ...

最新文章

  1. 中国互联网+光伏逆变器行业商业模式创新与投资机会深度研究报告
  2. 找出文件1中有而文件2中没有的数据
  3. phpcms V9判断奇数偶数的实例
  4. java for循环迭代_JAVA中的for-each循环与迭代
  5. 语义分割--Full-Resolution Residual Networks for Semantic Segmentation in Street Scenes
  6. python手机版怎么用-你知道如何用手机编程Python吗?
  7. maven实战笔记-13
  8. 在latex中导入endnote中的参考文献——简明步骤
  9. 快速编辑 Shell 命令行
  10. 感性理解Berlekamp-Massey算法
  11. P2055-假期的宿舍【网络流,最大流,最大匹配】
  12. JNI开发笔记(一)--Android Studio安装与环境搭建
  13. sklearn 下的树模型
  14. 在SQLBolt网站上学习入门SQL
  15. 天河区办理水电、管道煤气、有线电视过户手续所需资料及地址 ...
  16. 电磁场与电磁波_您的大脑在电磁场上
  17. 【数据挖掘实战】——航空公司客户价值分析(K-Means聚类案例)
  18. 饥荒联机版Mod开发——衣服(十一)
  19. 什么是车联网,IoV(Internet of Vehicles)
  20. 【线刷大师】纯净root线刷包,线刷教程及工具

热门文章

  1. [转]Git使用基础篇
  2. LCS最长公共子序列——动态规划
  3. 谷歌浏览器json工具安装
  4. 单例模式的两种实现方法:饿汉式和懒汉式以及民间懒汉式和登记式
  5. Microsoft Caffe(msCaffe)无GPU快速配置
  6. web 端可交互的离线渲染器,求 star~
  7. Centos6.5 源码安装MySql5.6.33
  8. linux下配置samba服务
  9. redis 性能监控和排查
  10. 黑马程序员——面向对象篇之多态