正则表达式和strings包相同,也是一个非常通用的包,在解析网页时肯定是没法略过它的。

转载请注明出处:http://www.cnblogs.com/SSSR/p/6347542.html

博客:

http://studygolang.com/articles/99 基础介绍

http://studygolang.com/articles/104

http://studygolang.com/articles/5565

以下为测试通过代码:

regexp.go

package regexplearningimport ("fmt""regexp"
)
import "bytes"func RegixAll(){FindTest()FindIndexTest()FindStringTest()FindChinesString()FindNumOrLowerLetter()FindAndReplace()
}//传入[]byte,返回[]byte
func FindTest() {str := "ab001234hah120210a880218end"reg := regexp.MustCompile("\\d{6}") //六位连续的数字fmt.Println("------Find------")//返回str中第一个匹配reg的字符串data := reg.Find([]byte(str))fmt.Println(string(data))fmt.Println("------FindAll------")//返回str中全部匹配reg的字符串//第二个參数表示最多返回的个数。传-1表示返回全部结果dataSlice := reg.FindAll([]byte(str), -1)for _, v := range dataSlice {fmt.Println(string(v))}
}//传入[]byte,返回首末位置索引
func FindIndexTest() {fmt.Println("------FindIndex------")//返回第一个匹配的字符串的首末位置reg2 := regexp.MustCompile("start\\d*end") //start開始。end结束。中间全是数字str2 := "00start123endhahastart120PSend09start10000end"//index[0]表示開始位置,index[1]表示结束位置index := reg2.FindIndex([]byte(str2))fmt.Println("start:", index[0], ",end:", index[1], str2[index[0]:index[1]])fmt.Println("------FindAllIndex------")//返回全部匹配的字符串首末位置indexSlice := reg2.FindAllIndex([]byte(str2), -1)for _, v := range indexSlice {fmt.Println("start:", v[0], ",end:", v[1], str2[v[0]:v[1]])}
}//传入string,返回string(更加方便)
func FindStringTest() {fmt.Println("------FindString------")str := "ab001234hah120210a880218end"reg := regexp.MustCompile("\\d{6}") //六位连续的数字fmt.Println(reg.FindString(str))fmt.Println(reg.FindAllString(str, -1))//下面两个方法是相似的fmt.Println(reg.FindStringIndex(str))fmt.Println(reg.FindIndex([]byte(str)))
}//查找汉字
func FindChinesString() {str := "hello中国hello世界和平hi好"reg := regexp.MustCompile("[\\p{Han}]+")fmt.Println(reg.FindAllString(str, -1))//[中国 世界和平 好]
}//查找数字或小写字母
func FindNumOrLowerLetter() {str := "HAHA00azBAPabc09FGabHY99"reg := regexp.MustCompile("[\\d|a-z]+")fmt.Println(reg.FindAllString(str, -1))//[00az abc09 ab 99]
}//查找并替换
func FindAndReplace() {str := "Welcome for Beijing-Tianjin CRH train."reg := regexp.MustCompile(" ")fmt.Println(reg.ReplaceAllString(str, "@")) //将空格替换为@字符//Welcome@for@Beijing-Tianjin@CRH@train.
}func RegixBase() {//这个测试一个字符串是否符合一个表达式。match, _ := regexp.MatchString("p([a-z]+)ch", "peach")fmt.Println(match)//上面我们是直接使用字符串,但是对于一些其他的正则任务,你需要使用 Compile 一个优化的 Regexp 结构体。r, _ := regexp.Compile("p([a-z]+)ch")//这个结构体有很多方法。这里是类似我们前面看到的一个匹配测试。fmt.Println(r.MatchString("peach"))//这是查找匹配字符串的。fmt.Println(r.FindString("peach punch"))//这个也是查找第一次匹配的字符串的,但是返回的匹配开始和结束位置索引,而不是匹配的内容。fmt.Println(r.FindStringIndex("peach punch"))//Submatch 返回完全匹配和局部匹配的字符串。例如,这里会返回 p([a-z]+)ch 和 `([a-z]+) 的信息。fmt.Println(r.FindStringSubmatch("peach punch"))//类似的,这个会返回完全匹配和局部匹配的索引位置。fmt.Println(r.FindStringSubmatchIndex("peach punch"))//带 All 的这个函数返回所有的匹配项,而不仅仅是首次匹配项。例如查找匹配表达式的所有项。fmt.Println(r.FindAllString("peach punch pinch", -1))//All 同样可以对应到上面的所有函数。fmt.Println(r.FindAllStringSubmatchIndex("peach punch pinch", -1))//这个函数提供一个正整数来限制匹配次数。fmt.Println(r.FindAllString("peach punch pinch", 2))//上面的例子中,我们使用了字符串作为参数,并使用了如 MatchString 这样的方法。我们也可以提供 []byte参数并将 String 从函数命中去掉。fmt.Println(r.Match([]byte("peach")))//创建正则表示式常量时,可以使用 Compile 的变体MustCompile 。因为 Compile 返回两个值,不能用语常量。r = regexp.MustCompile("p([a-z]+)ch")fmt.Println(r)//regexp 包也可以用来替换部分字符串为其他值。fmt.Println(r.ReplaceAllString("a peach", "<fruit>"))//Func 变量允许传递匹配内容到一个给定的函数中,in := []byte("a peach")out := r.ReplaceAllFunc(in, bytes.ToUpper)fmt.Println(string(out))
}

  

regexp_test.go

package regexplearningimport ("fmt""testing"//"regexplearning"
)
var print=fmt.Println
func TestFindTest(t *testing.T) {FindTest()fmt.Println("Hello World!这是测试")
}func TestRegixBase(t *testing.T) {RegixBase()fmt.Println("Hello World!这是测试")
}func TestRegixAll(t *testing.T) {print("测试所有的函数")RegixAll()fmt.Println("Hello World!这是测试")
}

  

转载于:https://www.cnblogs.com/SSSR/p/6347542.html

幽灵蛛(pholcus)(四)--正则表达式学习资料相关推荐

  1. 计算机科学与技术(嵌入式)四年学习资料_文件目录树

    说明: 资料内容主要包括:计嵌专业2019级大学四年主要科目的各种电子资料,有电子实验报告.课程设计报告.课程设计项目.整理复习笔记.电子书.ppt.练习题.期末试卷.部分课程软件资源.科创项目,职业 ...

  2. 手机号正则表达式验证_想精通正则表达式 这几个正则表达式学习资料及工具你必须有!...

    正则表达式不是什么开发语言,也不什么脚本语言,但是你在做项目开发的时候,离不开它.你可以把它理解过一种逻辑公式,正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本.正则对刚入门的程序员,甚至 ...

  3. 想精通正则表达式 这几个正则表达式学习资料及工具你必须有!

    正则表达式不是什么开发语言,也不什么脚本语言,但是你在做项目开发的时候,离不开它.你可以把它理解过一种逻辑公式,正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本.正则对刚入门的程序员,甚至 ...

  4. 请求方法+super+枚举+包装类+正则表达式+学习资料

    清理手机空间的时候发现了以前做的笔记,还有一些总结的其他大佬的 请求方法: get:获取查询数据(查询) post:数据的提交,新增操作(增加) put:向服务端发送数据.改变信息,侧重点在于对数据的 ...

  5. 国科大学习资料--人工智能原理与算法-第四次作业解析(学长整理)

    国科大学习资料–人工智能原理与算法-第四次作业解析(张文生老师主讲)(4.4.4.12) 4.4 生成大量的八数码问题和八皇后问题并用以下算法分别求解(如果可能的话):爬山法(最陡上升和首选爬山法), ...

  6. 国科大学习资料--人工智能原理与算法-第十四次作业解析(学长整理)

    国科大学习资料–人工智能原理与算法-第十四次作业解析(张文生老师主讲)

  7. 国科大学习资料–模式识别--第四次作业

    国科大学习资料–模式识别–第四次作业(刘成林老师主讲) 题目 答案

  8. 国科大学习资料--最优化计算方法(王晓)--第四次作业答案

    国科大学习资料–最优化计算方法(王晓)–第四次作业答案 国科大学习资料–最优化计算方法(王晓)–第四次作业答案 国科大学习资料–最优化计算方法(王晓)–第四次作业答案 ===============& ...

  9. 国科大学习资料–图像处理(彭思龙、杨戈)--第四次作业

    国科大学习资料–图像处理–第四次作业(彭思龙)(附完整代码) 答案仅供参考,严禁转载抄袭 题目 编程作业: 以lena图像为例,编程实现小波域维纳滤波(具体算法见十二讲ppt) 小波变换可以使用mat ...

  10. [转]机器学习和深度学习资料汇总【01】

    本文转自:http://blog.csdn.net/sinat_34707539/article/details/52105681 <Brief History of Machine Learn ...

最新文章

  1. hdu 1085 Holding Bin-Laden Captive!
  2. python里help和dir的区别_Python中dir()与help()的使用
  3. 采购寄售业务的系统实现
  4. 小程序云开发搜索功能的实现正则_几行代码实现小程序云开发提现功能
  5. 本地两台虚拟机构建NFS服务器和客户端
  6. mysql 组复制和传统复制_MySQL的GTID复制与传统复制的相互切换
  7. python基础:zip和dict详解
  8. javascript提示抖动实现方法
  9. UNIX网络编程笔记(7):回射程序的UDP版本
  10. x = x+1,x+=1,x++那个的执行效率高
  11. python coding utf-8_【转】怎么在Python里使用UTF-8编码
  12. 计算营业额python_ARIMA时间序列分析-----Python实例(一周销售营业额预测)
  13. sybase修改默认字符集为cp936
  14. 从零基础入门Tensorflow2.0 ----二、4.4 wide deep 模型(多输出)
  15. 我接触到的几款SQLite管理工具
  16. Java代码操作数据库(上)——JDBC(JDBC、JUnit、PreparedStatement) 练习
  17. 最大流(Dinic算法)
  18. vs2003无法打开sal.h
  19. P4409 [ZJOI2006]皇帝的烦恼(20190922B)(乱搞)
  20. trt-tl10ac01b220_android 7.0_emui 5.1,华为畅享7 plus固件TRT-TL10C01B201_Android 7.0_EMUI 5.1强刷救砖包...

热门文章

  1. 为什么网线接法要分交叉连接和直连连接两种方式
  2. 你需要来自TrustedInstaller的权限才能对此文件夹进行更改(已解决)
  3. 计算机算法设计与分析
  4. python导入wx_Python“导入wx”
  5. [vue] 使用vue后怎么针对搜索引擎做SEO优化?
  6. C03-Java同步实践加强班
  7. Reg命令使用详解 批处理操作注册表必备
  8. AdMob(app内嵌广告)使用入门
  9. BZOJ2794/POI2012 Cloakroom
  10. vue3.0组合式api语法使用总结