Golang 正则表达式

文章介绍了正则表达式的基本概念和常用元字符,如点、中括号、星号、加号等,并展示了如何在Golang中使用`regexp`库进行匹配和查找操作。特别提到了非贪婪匹配和正向、反向匹配,指出Golang原生库不支持这些功能,需要使用第三方库`github.com/dlclark/regexp2`。
摘要由CSDN通过智能技术生成

正则表达式特点:用的时候不会,学会之后就忘。每次用到现学现看,照葫芦画瓢,用起来不舒服,整理常用的正则表达式用法,及Golang 正则库使用。

元字符

元字符含义样例
.(点)匹配除\n \r 以外的任何字符c.t ,匹配cat、cbt、cct等
[xy](中括号)单字符匹配 或 的关系c[abc]t ,匹配cat、cbt、cct等
*前面的表达式重复任意次数ca*t ,匹配ct、cat、caat、caaat等
+前面的表达式重复至少一次ca+t ,匹配cat、caat、caaat等
前面的表达式重复至少一次ca?t ,匹配ct、cat
^如果出现在开头,表示以xx开头^my ,匹配my love
^如果出现在中括号内,表示取非计算[^c]at ,匹配除了cat 以外的 bat、dat等
$如果出现在结尾,表示以xx结尾ve$ ,匹配my love
{n}匹配前一个表达式次数ca{2}t ,匹配caat
{n,}匹配前一个表达式至少次数ca{2,}t ,匹配caat、caaat
{n,m}匹配前一个表达式的次数区间ca{2,4}t ,匹配caat、caaat,caaaat
跟在+*.{n}等后面的?,表示非贪婪匹配通常用于匹配、输出字符串
[a-z][A-Z]匹配一个范围[a-zA-Z0-9]等
\s任何不可见字符,包括空格、制表
\S任何可见字符
\w包括数字、字母、下划线等单词
\W上面的描述取反
\d数字0-9
\D匹配非数字
?:正向匹配www.baidu1.com www.baidu(?:1),会匹配www.baidu,golang原生包不支持正向、反向匹配
?<=:反向匹配非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95

Golang

注意:使用正向、反向匹配使用 “github.com/dlclark/regexp2” 库

MatchString 判断是否与正则匹配

func main() {
	text := `www.baidu123.com`
	reg := regexp.MustCompile(`w{3}\..*\.com`)  
	fmt.Printf("%v\n", reg.MatchString(text))
}

FindAllStringSubmatch 找到所有匹配的字符串

func main() {
	text := `www.baidu123.comabc123 www.123.com`
	reg := regexp.MustCompile(`w{3}\..*\.com`)
	fmt.Printf("%v\n", reg.FindAllStringSubmatch(text, -1))
}
结果:
[[www.baidu123.comabc123 www.123.com]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明神特烦恼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值