Go语言正则表达式用法实例小结【查找、匹配、替换等】

本文实例讲述了Go语言正则表达式用法。分享给大家供大家参考,具体如下:

Go语言的正则表达式使用很简单,示例代码:

代码如下:

package test
import (
    "fmt"
    "regexp"
)
func RegixBase() {
    //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.
}

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

希望本文所述对大家Go语言程序设计有所帮助。

(0)

相关推荐

  • iOS 正则表达式判断纯数字及匹配11位手机号码的方法

    第一种使用正则表达式 判断 //是否是纯数字 + (BOOL)isNumText:(NSString *)str{ NSString * regex = @"(/^[0-9]*$/)"; NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; BOOL isMatch = [pred evaluateWithObject:str]; if (isMatch)

  • 正则表达式全局匹配模式(g修饰符)

    正则表达式g修饰符: g修饰符用语规定正则表达式执行全局匹配,也就是在找到第一个匹配之后仍然会继续查找. 语法结构: 构造函数方式: new RegExp("regexp","g") 对象直接量方式: /regexp/g 浏览器支持: IE浏览器支持此元字符. 火狐浏览器支持此元字符. 谷歌浏览器支持此元字符. 实例代码: 实例一: var str="this is an antzone good"; var reg=/an/; console.

  • 正则表达式匹配IP的表达式(推荐)

    这里给大家详细讲解一下一个匹配IP地址的正则表达式, 有关正则方面的知识,会在详细的讲解中提到. 在讲解之前,我先给大家介绍一下,ip地址的生成规则. IP地址,是由32位数字二进制转为四个十进制的字符串组成. 怎么转化?下面讲解: 二进制:11111111111111111111111111111111 分为四部分:11111111.11111111.11111111.11111111 转化:2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0=255 转为十进制范围:0~255.0

  • 正则表达式m修饰符(多行匹配)

    正则表达式m修饰符: m修饰符规定正则表达式可以执行多行匹配. m修饰符的作用是修改^和$在正则表达式中的作用,让它们分别表示行首和行尾. 在默认状态下,一个字符串无论是否换行只有一个开始^和结尾$,如果采用多行匹配,那么每一个行都有一个^和结尾$. 语法结构: 构造函数方式: new RegExp("regexp","m") 对象直接量方式: /regexp/m 浏览器支持: IE浏览器支持此元字符. 火狐浏览器支持此元字符. 谷歌浏览器支持此元字符. 实例代码:

  • 正则表达式匹配(URL、电话、手机、邮箱)的实例代码

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文本.下面通过实例代码给大家介绍正则表达式匹配(URL.电话.手机.邮箱)的实例代码,一起看看吧! 废话不多说了,直接给大家贴代码了,具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta ch

  • 正则表达式教程之重复匹配详解

    本文实例讲述了正则表达式教程之重复匹配.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明.所有java例子都在JDK1.6.0_13下测试通过. 一.有多少个匹配 前面几篇讲的都是匹配一个字符,但是一个字符或字符集合要匹配多次,应该怎么做呢?比如要匹配一个电子邮件地址,用之前说到的方法,可能有人会写出像\w@\w\.\w这样的正则表达式,但这个只能匹配到像a@b.c

  • Java使用正则表达式(regex)匹配中文实例代码

    只能输入中文 /** * 22.验证汉字 * 表达式 ^[\u4e00-\u9fa5]{0,}$ * 描述 只能汉字 * 匹配的例子 清清月儿 */ @Test public void a1() { Scanner sc = new Scanner(System.in); String input = sc.nextLine(); String regex = "^[\\u4e00-\\u9fa5]*$"; Matcher m = Pattern.compile(regex).matc

  • Python使用中文正则表达式匹配指定中文字符串的方法示例

    本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

  • Go语言正则表达式用法实例小结【查找、匹配、替换等】

    本文实例讲述了Go语言正则表达式用法.分享给大家供大家参考,具体如下: Go语言的正则表达式使用很简单,示例代码: 复制代码 代码如下: package test import (     "fmt"     "regexp" ) func RegixBase() {     //findTest()     //findIndexTest()     //findStringTest()     //findChinesString()     //findNum

  • go语言template用法实例

    本文实例讲述了go语言template用法.分享给大家供大家参考.具体分析如下: golang的template包很好用,做一些复杂的文本格式生成太有帮助了,生成网页也是很不错的,使用起来非常方便 复制代码 代码如下: package main import (     "fmt"     "os"     "text/template" ) type Latlng struct {     Lat float32     Lng float32

  • Go语言map用法实例分析

    本文实例讲述了Go语言map用法.分享给大家供大家参考.具体分析如下: map 映射键到值: map 在使用之前必须用 make 来创建(不是 new):一个值为 nil 的 map 是空的,并且不能赋值. 复制代码 代码如下: package main import "fmt" type Vertex struct {     Lat, Long float64 } var m map[string]Vertex func main() {     m = make(map[stri

  • Go语言MessageBox用法实例

    本文实例讲述了Go语言MessageBox用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: package main import (        "syscall"        "unsafe"        "fmt" ) func abort(funcname string, err int) {        panic(funcname + " failed: " + syscall.Errno(er

  • Go语言接口用法实例

    本文实例讲述了Go语言接口用法.分享给大家供大家参考.具体分析如下: 接口类型是由一组方法定义的集合. 接口类型的值可以存放实现这些方法的任何值. 复制代码 代码如下: package main import (     "fmt"     "math" ) type Abser interface {     Abs() float64 } func main() {     var a Abser     f := MyFloat(-math.Sqrt2)   

  • GO语言Defer用法实例分析

    本文实例讲述了GO语言Defer用法.分享给大家供大家参考.具体分析如下: defer:调用一个被 defer 的函数时在函数刚要返回之前延迟执行,当函数无论怎样返回,某资源必须释放时,可用这种与众不同.但有效的处理方式.传统的例子包括解锁互斥或关闭文件. 这样延迟一个函数有双重优势:一是你永远不会忘记关闭文件,此错误在你事后编辑函数添加一个返回路径时常常发生.二是关闭和打开靠在一起,比放在函数尾要清晰很多. 复制代码 代码如下: /**  * Created with IntelliJ IDE

  • JSP中正则表达式用法实例

    本文实例讲述了JSP中正则表达式用法.分享给大家供大家参考,具体如下: <%@ page language="java" import="java.util.*,cn.com.Person,cn.com.Adddress" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+

  • go语言base64用法实例

    本文实例讲述了go语言base64用法.分享给大家供大家参考.具体如下: 这里展示golang base64 的一个小例子,代码如下: 复制代码 代码如下: package main import (     "fmt"     "encoding/base64" )             func main() {     b64 := base64.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl

  • go语言接口用法实例分析

    本文实例讲述了go语言接口用法.分享给大家供大家参考.具体分析如下: 首先定义一个接口: 复制代码 代码如下: type I interface{     Get() int     Put(int)   } 这段话就定义了一个接口,它包含两个函数Get和Put 好了,我的一个接口实现了这个接口: 复制代码 代码如下: type S stuct {val int} func (this *S) Get int {     return this.val } func (this *S)Put(v

  • 批处理FINDSTR正则表达式用法实例分析

    1.findstr . 2.txt 或 Findstr "." 2.txt 从文件2.txt中查找任意字符,不包括空字符或空行 2.findstr .* 2.txt 或 findstr ".*" 2.txt 从文件2.txt中查找任意字符包括空行和空字符 3.findstr "[0-9]" 2.txt 从文件2.txt中查找包括数字0-9的字符串或行 4.findstr "[a-zA-Z]" 2.txt 从文件2.txt中查找

随机推荐