韩忠康mysql正则表达式_Go语言中正则表达式的处理
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语言中正则表达式的处理相关推荐
- python正则表达式教程_Python中正则表达式的巧妙使用一文包你必掌握正则,
Python中正则表达式的巧妙使用一文包你必掌握正则, 前言 正则表达式就是从字符串中发现规律,并通过"抽象"的符号表达出来.打个比方,对于2,5,10,17,26,37这样的数字 ...
- java正则表达式类_java中正则表达式之Pattern类与Matcher类
java中正则表达式之Pattern类与Matcher类 ======================================================================= ...
- go语言字符串换行_Go语言中的字符串处理方法示例详解
1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(" ...
- go语言复数包_Go语言中包的风格指南
Go 语言也有自己的命名与代码组织规则.漂亮的代码,布局清晰.易读易懂,就像是设计严谨的 API 一样.拿到代码,用户首先看到和接触的就是布局.命名还有包的结构. 这篇文章不是为了给大家设立硬性的规定 ...
- go http 处理w.write 错误_Go语言中的异常和错误处理简介
女主宣言 异常和错误处理在保证程序的鲁棒性方面起到了至关重要的作用.C++.Java.Python中的异常和错误处理都是比较类似的,可以用try-catch逻辑操作,但是Go中的异常处理却有别于以上三 ...
- mysql 大小端_go语言中大小端模式的个人理解
大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据 当作字符串的存储顺序处理.地址由小向大增加,而数据从高位往低位放:这和我们的阅读习 ...
- go语言入门经典_Go 语言中的 gRPC 基础入门
01 为什么使用 gRPC? 借助 gRPC,我们可以在 .proto 文件中一次定义我们的服务,并以 gRPC 支持的任何语言生成客户端和服务器代码,无论是在大型数据中心内的服务器,还是在个人的电脑 ...
- golang mysql 超时_Go语言channel超时机制
Go语言没有提供直接的超时处理机制,所谓超时可以理解为当我们上网浏览一些网站时,如果一段时间之后不作操作,就需要重新登录. 那么我们应该如何实现这一功能呢,这时就可以使用 select 来设置超时. ...
- golang的int64排序_go语言中的排序讲解
go语言的排序思路和 c 和 c++ 有些差别. c 默认是对数组进行排序, c++ 是对一个序列进行排序, go 则更宽泛一些,待排序的可以是任何对象, 虽然很多情况下是一个 slice (分片, ...
- go语言mysql视频_Go语言实战流媒体视频网站
第1章 课程介绍 介绍这门课程大纲,技术堆栈以及环境 1-1 prestudy 1-2 课程介绍及知识要点预习 第2章 一个例子了解golang工具链 通过一个简单的webservice具体从gola ...
最新文章
- 中国互联网+光伏逆变器行业商业模式创新与投资机会深度研究报告
- 找出文件1中有而文件2中没有的数据
- phpcms V9判断奇数偶数的实例
- java for循环迭代_JAVA中的for-each循环与迭代
- 语义分割--Full-Resolution Residual Networks for Semantic Segmentation in Street Scenes
- python手机版怎么用-你知道如何用手机编程Python吗?
- maven实战笔记-13
- 在latex中导入endnote中的参考文献——简明步骤
- 快速编辑 Shell 命令行
- 感性理解Berlekamp-Massey算法
- P2055-假期的宿舍【网络流,最大流,最大匹配】
- JNI开发笔记(一)--Android Studio安装与环境搭建
- sklearn 下的树模型
- 在SQLBolt网站上学习入门SQL
- 天河区办理水电、管道煤气、有线电视过户手续所需资料及地址 ...
- 电磁场与电磁波_您的大脑在电磁场上
- 【数据挖掘实战】——航空公司客户价值分析(K-Means聚类案例)
- 饥荒联机版Mod开发——衣服(十一)
- 什么是车联网,IoV(Internet of Vehicles)
- 【线刷大师】纯净root线刷包,线刷教程及工具