核心内容摘要
论文“数据魔法师”:书匠策AI数据分析功能大揭秘
HoRain云小助手个人主页 个人专栏: 《Linux 系列教程》《c语言教程》⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。
点击跳转到网站。
专栏介绍专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧让大家从底层了解C把更多的知识由抽象到简单通俗易懂。
《网络协议》本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘一起解密网络协议在运行中协议的基本运行机制《docker容器精解篇》全面深入解析 docker 容器从基础到进阶涵盖原理、操作、
实践案例助您精通 docker。
《linux系列》本专栏主要撰写Linux干货内容从基础到进阶知识由抽象到简单通俗易懂帮你从新手小白到扫地僧。
《python 系列》本专栏着重撰写Python相关的干货内容与编程技巧助力大家从底层去认识Python将更多复杂的知识由抽象转化为简单易懂的内容。
《试题库》本专栏主要是发布一些考试和练习题库涵盖软考、HCIE、HRCE、CCNA等目录⛳️ 推荐专栏介绍Go 语言正则表达式详解
基本概念
1 标准库介绍
2 编译正则表达式
常用操作
1 匹配检测
2 查找匹配
3 分组捕获
4 替换操作
5 分割字符串
正则表达式语法
1 常见元字符
2 贪婪与非贪婪匹配
最佳实践
1 预编译正则表达式
2 使用原生字符串
3 常用正则模式示例
五、
注意事项Go 语言正则表达式详解Go 语言通过标准库regexp包提供正则表达式支持基于 RE2 语法与 Perl 和 Python 类似但不支持所有特性如反向引用。
基本概念
1 标准库介绍包名regexp核心类型*regexp.Regexp编译后的正则表达式对象特点线程安全、支持 Perl 兼容语法PCRE
2 编译正则表达式// Compile返回错误适合需要错误处理的场景 re, err : regexp.Compile(\d) if err ! nil { fmt.Println(编译失败:, err) return } // MustCompile编译失败会 panic适合已知合法的正则表达式 re : regexp.MustCompile([a-z])
常用操作
1 匹配检测// 简单匹配不编译 match, _ : regexp.MatchString(^hello, hello world) fmt.Println(match) // true // 使用编译后的正则表达式 re : regexp.MustCompile(^\d{3}-\d{2}-\d{4}$) fmt.Println(re.MatchString(
-
) // true
2 查找匹配re : regexp.MustCompile(\d) // 查找第一个匹配 text : Order number 12345 fmt.Println(re.FindString(text)) // 12345 // 查找所有匹配 text2 : Numbers: 123, 456, and
fmt.Println(re.FindAllString(text2, -
) // [123 456 789]
3 分组捕获re : regexp.MustCompile((\d)-(\d)-(\d)) text : Todays date is
-
// 获取匹配及其子组 submatches : re.FindStringSubmatch(text) // submatches[0]
(完整匹配) // submatches[1] 2025 (第一个分组) // submatches[2] 01 (第二个分组) // submatches[3] 25 (第三个分组)
4 替换操作// 简单替换 re : regexp.MustCompile(cat) result : re.ReplaceAllString(one cat, two cats, dog) // one dog, two dogs // 使用分组引用 re regexp.MustCompile((\w)(\w)) result re.ReplaceAllString(nameJohn, $2:$
// John:name // 函数式替换 re regexp.MustCompile(\d) result re.ReplaceAllStringFunc(A1 B2, func(s string) string { return [ s ] }) // A[1] B[2]
5 分割字符串re : regexp.MustCompile(\s*,\s*) parts : re.Split(go, python, rust, -
// [go python rust]
正则表达式语法
1 常见元字符元字符含义.匹配任意单个字符除换行符外*匹配前面的字符零次或多次匹配前面的字符一次或多次?匹配前面的字符零次或一次[]匹配方括号内的任意一个字符[^]匹配不在方括号内的任意一个字符()分组^匹配字符串的开头$匹配字符串的结尾\d匹配数字等价于 [
]\w匹配单词字符等价于 [a-zA-Z
_]
2 贪婪与非贪婪匹配text : abccc // 贪婪匹配默认- 尽可能多地匹配 re : regexp.MustCompile(ab(c)) fmt.Println(re.FindString(text)) // abccc // 非贪婪匹配 - 尽可能少地匹配 re regexp.MustCompile(ab(c)?) fmt.Println(re.FindString(text)) // abc
最佳实践
1 预编译正则表达式// ❌ 错误示例在循环中重复编译 for _, text : range texts { re, _ : regexp.Compile(\d) re.MatchString(text) } // ✅ 正确示例预编译后复用 re : regexp.MustCompile(\d) for _, text : range texts { re.MatchString(text) }
2 使用原生字符串Go 支持使用反引号创建原生字符串避免转义问题// 清晰的写法 re : regexp.MustCompile([\[{(]\d[)}\]]) // 不需要像其他语言那样写成[\\[{(]\\d[)}\\]]
3 常用正则模式示例// 邮箱验证 emailRe : regexp.MustCompile(^[\w-]\w\.\w$) // 手机号验证中国大陆 phoneRe : regexp.MustCompile(^1[
]\d{9}$) // 日期格式转换YYYY-MM-DD 转为 DD/MM/YYYY dateRe : regexp.MustCompile((\d{4})-(\d{2})-(\d{2})) result : dateRe.ReplaceAllString(
, ${3}/${2}/${1}) // 15/08/2023
五、
注意事项不支持反向引用Go 的正则表达式不支持\1这样的反向引用语法错误处理使用Compile时务必检查错误性能考虑正则表达式匹配可能较慢尤其在处理大文本时简化表达式复杂的正则表达式难以维护必要时拆分为多个简单正则通过合理使用 Go 的regexp包可以高效地完成字符串验证、文本解析和模式匹配等任务。
❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧