当前位置: 首页 > wzjs >正文

新疆人社小程序seo体系百科

新疆人社小程序,seo体系百科,中国域名注册,山西建设网官方网站Go语言的 regexp 模块提供了正则表达式操作,支持模式匹配、查找、替换和分割等功能。以下是核心方法及示例: 1. 编译正则表达式 regexp.Compile 编译正则表达式,返回 *Regexp 对象。如果正则非法,返回错误。 re, err : regexp.…

Go语言的 regexp 模块提供了正则表达式操作,支持模式匹配、查找、替换和分割等功能。以下是核心方法及示例:


1. 编译正则表达式

regexp.Compile

编译正则表达式,返回 *Regexp 对象。如果正则非法,返回错误。

re, err := regexp.Compile(`\d+`)
if err != nil {panic(err)
}
fmt.Println(re.MatchString("123")) // 输出: true
regexp.MustCompile

编译正则表达式,如果失败直接 panic(适用于全局变量初始化)。

re := regexp.MustCompile(`\d+`)
fmt.Println(re.MatchString("abc")) // 输出: false

2. 匹配检查

MatchString

直接检查字符串是否匹配正则表达式(无需编译)。

matched, _ := regexp.MatchString(`\d+`, "2023")
fmt.Println(matched) // 输出: true
Regexp.MatchString

使用预编译的正则对象检查匹配。

re := regexp.MustCompile(`^[A-Za-z]+$`)
fmt.Println(re.MatchString("Hello")) // 输出: true

3. 查找匹配

FindString

查找第一个匹配的字符串。

re := regexp.MustCompile(`\d+`)
fmt.Println(re.FindString("year 2023, month 12")) // 输出: 2023
FindAllString

查找所有匹配的字符串。

re := regexp.MustCompile(`\d+`)
matches := re.FindAllString("2023-12-31", -1)
fmt.Println(matches) // 输出: [2023 12 31]
FindStringIndex

返回第一个匹配的起始和结束索引。

re := regexp.MustCompile(`\d+`)
index := re.FindStringIndex("year 2023")
fmt.Println(index) // 输出: [5 9](匹配"2023")

4. 子匹配组(分组捕获)

FindStringSubmatch

查找第一个匹配及其子组。

re := regexp.MustCompile(`(\d{4})-(\d{2})-(\d{2})`)
match := re.FindStringSubmatch("2023-12-31")
fmt.Println(match) // 输出: [2023-12-31 2023 12 31]
FindAllStringSubmatch

查找所有匹配及其子组。

re := regexp.MustCompile(`(\d+)-(\d+)`)
matches := re.FindAllStringSubmatch("2023-12 1999-01", -1)
fmt.Println(matches)
// 输出: [[2023-12 2023 12] [1999-01 1999 01]]

5. 替换操作

ReplaceAllString

替换所有匹配项(支持 $1 引用子组)。

re := regexp.MustCompile(`(\d+)-(\d+)`)
result := re.ReplaceAllString("2023-12", "$2/$1")
fmt.Println(result) // 输出: 12/2023
ReplaceAllLiteralString

字面量替换(不解析 $1)。

re := regexp.MustCompile(`\d+`)
result := re.ReplaceAllLiteralString("123", "X")
fmt.Println(result) // 输出: X
ReplaceAllFunc

通过函数动态生成替换内容。

re := regexp.MustCompile(`\d+`)
result := re.ReplaceAllStringFunc("123", func(s string) string {return "[" + s + "]"
})
fmt.Println(result) // 输出: [123]

6. 分割字符串

Split

根据正则分割字符串。

re := regexp.MustCompile(`\s*,\s*`) // 匹配逗号及周围空格
parts := re.Split("a, b, c", -1)
fmt.Println(parts) // 输出: [a b c]

7. 扩展功能

Expand

动态生成替换内容(结合子组)。

re := regexp.MustCompile(`(\d+)-(\d+)`)
src := []byte("2023-12")
dst := []byte{}
template := []byte("Year: $1, Month: $2")
result := re.Expand(dst, template, src, re.FindSubmatchIndex(src))
fmt.Println(string(result)) // 输出: Year: 2023, Month: 12

8. 其他方法

QuoteMeta

转义正则中的特殊字符。

escaped := regexp.QuoteMeta(`.*+?^$()[]{}|`)
fmt.Println(escaped) // 输出: \.\*\+\?\^\$\(\)\[\]\{\}\|
Longest

启用最长匹配模式(默认贪婪模式)。

re := regexp.MustCompile(`a+?`).Longest() // 关闭贪婪模式
fmt.Println(re.FindString("aaaa"))       // 输出: aaaa

总结

  • 核心方法
    • 编译:Compile, MustCompile
    • 匹配:MatchString, FindString, FindAllString
    • 替换:ReplaceAllString, ReplaceAllFunc
    • 分割:Split
    • 子组:FindStringSubmatch, FindAllStringSubmatch
  • 高级功能
    • 动态替换:Expand
    • 转义:QuoteMeta
  • 注意事项
    • 预编译正则表达式(Compile)提升性能。
    • *Regexp 对象是线程安全的,可在多个 goroutine 中使用。
http://www.dtcms.com/wzjs/492975.html

相关文章:

  • 高端网站定制开发设计制作免费发布广告信息网
  • 网站建设详细设计搜索引擎调词工具哪个好
  • 广州网站设计 信科网络seo网站地图
  • 做网站代理商好赚吗?西安百度推广优化公司
  • 外贸网站建设 双语网站建设windows优化大师卸载不掉
  • 装修公司加盟免费连云港seo优化
  • 长沙房地产seo技术教程博客
  • 做网站域名要自己注册吗搜狗seo培训
  • 网页怎么截图自动app优化
  • 重庆建设工程监督管理局网站上海最新新闻热点事件
  • 做cps需要什么样的网站男生最喜欢的浏览器
  • 网站开发源代码留号码的广告网站不需要验证码
  • 南宁建行 网站合肥网络优化公司有几家
  • 外包公司属于什么行业广州网站排名专业乐云seo
  • 支付功能网站建设互联网广告投放公司
  • 微信音乐做mp3下载网站淘宝seo软件
  • 自己做自营网站志鸿优化网
  • 定州做网站seo是什么工作内容
  • 建网站多少钱建个网站需要怎么做株洲网络推广
  • rss网站推广法外链在线生成
  • 网站开发 用什么框架谷歌商店下载安装
  • 网站建设规划表互动营销的概念
  • 商城分销怎么做石家庄关键词优化平台
  • 深圳罗湖做网站的公司哪家好网站seo优化技能
  • 上海网站建设公司费用北京seo软件
  • 如何给喜欢的明星做网站总推荐榜总点击榜总排行榜
  • 网站300m空间网站ip查询站长工具
  • 在线图片编辑器精简版网站优化要做哪些
  • 代做设计网站百度推广培训班
  • 哪个网站可以做公务员真题宁波seo网络推广咨询热线