Go语言的正則表達式使用非常easy。演示样例代码:

  1. package test
  2.  
  3. import (
  4. "fmt"
  5. "regexp"
  6. )
  7.  
  8. func RegixBase() {
  9. //findTest()
  10. //findIndexTest()
  11. //findStringTest()
  12. //findChinesString()
  13. //findNumOrLowerLetter()
  14. findAndReplace()
  15. }
  16.  
  17. //传入[]byte,返回[]byte
  18. func findTest() {
  19. str := "ab001234hah120210a880218end"
  20. reg := regexp.MustCompile("\\d{6}") //六位连续的数字
  21. fmt.Println("------Find------")
  22. //返回str中第一个匹配reg的字符串
  23. data := reg.Find([]byte(str))
  24. fmt.Println(string(data))
  25.  
  26. fmt.Println("------FindAll------")
  27. //返回str中全部匹配reg的字符串
  28. //第二个參数表示最多返回的个数。传-1表示返回全部结果
  29. dataSlice := reg.FindAll([]byte(str), -1)
  30. for _, v := range dataSlice {
  31. fmt.Println(string(v))
  32. }
  33. }
  34.  
  35. //传入[]byte,返回首末位置索引
  36. func findIndexTest() {
  37. fmt.Println("------FindIndex------")
  38. //返回第一个匹配的字符串的首末位置
  39. reg2 := regexp.MustCompile("start\\d*end") //start開始。end结束。中间全是数字
  40. str2 := "00start123endhahastart120PSend09start10000end"
  41. //index[0]表示開始位置,index[1]表示结束位置
  42. index := reg2.FindIndex([]byte(str2))
  43. fmt.Println("start:", index[0], ",end:", index[1], str2[index[0]:index[1]])
  44.  
  45. fmt.Println("------FindAllIndex------")
  46. //返回全部匹配的字符串首末位置
  47. indexSlice := reg2.FindAllIndex([]byte(str2), -1)
  48. for _, v := range indexSlice {
  49. fmt.Println("start:", v[0], ",end:", v[1], str2[v[0]:v[1]])
  50. }
  51. }
  52.  
  53. //传入string,返回string(更加方便)
  54. func findStringTest() {
  55. fmt.Println("------FindString------")
  56.  
  57. str := "ab001234hah120210a880218end"
  58. reg := regexp.MustCompile("\\d{6}") //六位连续的数字
  59. fmt.Println(reg.FindString(str))
  60. fmt.Println(reg.FindAllString(str, -1))
  61. //下面两个方法是相似的
  62. fmt.Println(reg.FindStringIndex(str))
  63. fmt.Println(reg.FindIndex([]byte(str)))
  64. }
  65.  
  66. //查找汉字
  67. func findChinesString() {
  68. str := "hello中国hello世界和平hi好"
  69. reg := regexp.MustCompile("[\\p{Han}]+")
  70. fmt.Println(reg.FindAllString(str, -1))
  71.  
  72. //[中国 世界和平 好]
  73. }
  74.  
  75. //查找数字或小写字母
  76. func findNumOrLowerLetter() {
  77. str := "HAHA00azBAPabc09FGabHY99"
  78. reg := regexp.MustCompile("[\\d|a-z]+")
  79. fmt.Println(reg.FindAllString(str, -1))
  80.  
  81. //[00az abc09 ab 99]
  82. }
  83.  
  84. //查找并替换
  85. func findAndReplace() {
  86. str := "Welcome for Beijing-Tianjin CRH train."
  87. reg := regexp.MustCompile(" ")
  88. fmt.Println(reg.ReplaceAllString(str, "@")) //将空格替换为@字符
  89.  
  90. //Welcome@for@Beijing-Tianjin@CRH@train.
  91. }

Go语言:正則表達式的使用的更多相关文章

  1. 正則表達式 - C语言

    http://blog.csdn.net/pipisorry/article/details/37073843 sscanf/scanf正则使用方法 %[ ] 的使用方法:%[ ]表示要读入一个字符集 ...

  2. Linux正則表達式-反复出现的字符

    星号(*)元字符表示它前面的正則表達式能够出现零次或多次.也就是说,假设它改动了单个字符.那么该字符能够在那里也能够不在那里,而且假设它在那里,那可能会不止出现一个.能够使用星号元字符匹配出如今引號中 ...

  3. JAVA中正則表達式总结

    昨天,我的朋友请教我正則表達式.我也好久没有写过正則表達式了,昨天刚好看了下如鹏网创始人杨中科老师关于正則表達式的解说.使我加深了正則表達式的印像.现我把他总结下: 很多语言,包含Perl.PHP.P ...

  4. Perl入门(四)Perl的正則表達式

    正則表達式是Perl语言的特色.主要的语法不是非常难,可是编写一个符合需求.高效的正則表達式.还是有一些挑战的. Perl的三种匹配模式 1.查找 语法:m/正則表達式内容/; 作用:查找匹配内容中是 ...

  5. python 学习笔记 10 -- 正則表達式

    零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...

  6. 轻松学习之Linux教程六 正則表達式具体解释

    本系列文章由@超人爱因斯坦出品.转载请注明出处. 作者:超人爱因斯坦    个人站点:http://www.hpw123.net          文章链接:http://hpw123.net/a/L ...

  7. javascript 正則表達式补充

    定义 JavaScript种正則表達式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...

  8. 黑马程序猿————Java基础日常笔记---反射与正則表達式

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序猿----Java基础日常笔记---反射与正則表達式 1.1反射 反射的理解和作用: 首 ...

  9. 辛星教你高速掌握PHP的正則表達式

    首先说一下,这篇文章也是我在看了数个大牛的博客之后总结出来的,因此首先向这些大牛表示崇高的敬意和感谢,因为人数众多.并且来源也是特别分散,就不一一介绍了,见谅. ************跨语言的主题* ...

随机推荐

  1. 如何使用maven 打包源代码呢?

    如何使用maven 打包源代码呢? http://hw1287789687.iteye.com/blog/1943157

  2. 洛谷 P1610 鸿山洞的灯

    P1610 鸿山洞的灯 题目描述 已知n盏灯以及每盏灯的位置p[i],p[i]均不相等,两盏相邻的灯当小于dist时,若这个安全距离里面还有灯是亮着时,就可以关掉该盏灯,(即若第i-1盏与第i+1盏的 ...

  3. JdbcTemplate简单介绍

    转自:http://www.php.cn/java-article-368819.html 一.关于JdbcTemplate JdbcTemplate是最基本的Spring JDBC模板,这个模板支持 ...

  4. CSS笔记--选择器

    CSS笔记--选择器 mate的使用 <meta charset="UTF-8"> <title>Document</title> <me ...

  5. 有关Canvas的一点小事—canvas和resize

     之前就说了canvas设置大小的时候用的就是设置实打实的像素值,像图像一样设置百分比然后根据浏览器大小自己适应大小是不可能的——当然一般也不会想要cavans改变大小.不过项目之前有用到过,既然去了 ...

  6. python2与python3的不同

    1.源码: python2的源码混乱.冗余.重复,非常不规范 python3的源码经过整合,优美.清晰.简单 2.编码: python2的默认编码是ASCII码,不能识别中文,需要在行首添加# -*- ...

  7. 《社交红利》读书总结--如何从微信微博QQ空间等社交网络带走海量用户、流量与收入

    <社交红利--如何从微信微博QQ空间等社交网络带走海量用户.流量与收入>--徐志斌 著 <社交红利>这本书2013年9月才上市,卖的非常火. 我最初是在公司内部的期刊上,看到有 ...

  8. Android 文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)

    一.URI 通用资源标志符(Universal Resource Identifier, 简称"URI"). Uri代表要操作的数据,Android上可用的每种资源 - 图像.视频 ...

  9. 如何使用 PyCharm 将代码上传到GitHub上(详细图解)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一丶说明 测试条件:需要有GitHub账号以及在本地安装了Git工具,无论是Linux环境还是Windows都是一样的 如果还没有 ...

  10. thinkphp5最最最最简单的ajax实例

    thinkphp5最最最最简单的ajax实例 一.总结 一句话总结:页面端使用$.get()方法传递ajax请求,服务器端判断是不是ajax请求,是的话接受参数,进行逻辑处理之后向客户端返回值. 1. ...