zoukankan      html  css  js  c++  java
  • go regexp 正则表达式使用

    • go 正则表达式使用:
    /**
    * @Author: wsp
    * @Date: 2018/1/15 10:58
    * @Description:
     */
    package regexpStudy
    
    import (
        "bytes"
        "fmt"
        "regexp"
    )
    
    func RegexpStudy1() {
        var result interface{}
        var err error
        result, err = regexp.MatchString("w[0-9]*sp", "wsp")
        ErrHandler(err)
        fmt.Println("匹配结果:", result)
    }
    
    func RegexpStudy2() {
        r, err := regexp.Compile("u([a-z]+)ledger")
        ErrHandler(err)
        // 判断是否匹配
        fmt.Println(r.MatchString("uniledger"))
    
        // 匹配第一次出现的字符串
        fmt.Println(r.FindString("uniledger uwspledger"))
    
        // 匹配第一次出现的字符串开始及结束索引
        fmt.Println(r.FindStringIndex("uniledger uwspledger"))
    
        // 返回第一次匹配的字符串,全局匹配及局部匹配的内容
        fmt.Println(r.FindStringSubmatch("uniledger uwspledger"))
    
        // 返回第一次匹配的字符串,全局匹配及局部匹配的内容的开始及结束的索引
        fmt.Println(r.FindStringSubmatchIndex("uniledger uwspledger"))
    
        // 返回字符串所有匹配的内容,不仅仅首次匹配项 n<0 返回所有匹配项,n>0 返回n个匹配项
        fmt.Println(r.FindAllString("uniledger uwspledger uniledger uwspledger", -1))
    
        // 返回字符串所有匹配的内容,不仅仅首次匹配项 n<0 返回所有匹配项,n>0 返回n个匹配项的索引
        fmt.Println(r.FindAllStringIndex("uniledger uwspledger uniledger uwspledger", -1))
    
        // 返回[]byte数组所有匹配的内容,不仅仅首次匹配项 n<0 返回所有匹配项,n>0 返回n个匹配项的索引
        fmt.Println(r.FindAllIndex([]byte("uniledger uwspledger uniledger uwspledger"), -1))
    
        r = regexp.MustCompile("p([a-z]+)ch")
        fmt.Println(r)
    
        // 替换匹配的字符串的内容
        fmt.Println(r.ReplaceAllString("a peach", "<fruit>"))
    
        // 将匹配的元素 传递给一个函数
        in := []byte("a peach")
        out := r.ReplaceAllFunc(in, bytes.ToUpper)
        fmt.Println(string(out))
    
    }
    
    /**
    * @Author: wsp
    * @Date: 10:27 2018/1/12
    * @Description: 错误处理
     */
    func ErrHandler(err error) {
        if err != nil {
            panic(err)
        }
    }
    • 测试文件
    /**
    * @Author: wsp
    * @Date: 2018/1/15 10:58
    * @Description:
     */
    package regexpStudy
    
    import "testing"
    
    func TestRegexpStudy1(t *testing.T) {
        RegexpStudy1()
    }
    
    func TestRegexpStudy2(t *testing.T) {
        RegexpStudy2()
    }
    • 测试结果
    true
    punch
    [0 5]
    [punch un]
    [0 5 1 3]
    [peach punch pinch]
    [[0 5] [6 11] [12 17]]
    [[0 5] [6 11] [12 17]]
    p([a-z]+)ch
    a <fruit>
    a PEACH
  • 相关阅读:
    用简单的方法解决问题
    记一次调试
    工作笔记还是蛮有用
    35岁往上做什么
    2013年个人总结
    一个C++宏定义与枚举定义重复的编译错误
    动态库的麻烦之处
    谈谈软件项目的dependency
    创建pathing jar
    谈谈patch strategy
  • 原文地址:https://www.cnblogs.com/hcy-fly/p/8287375.html
Copyright © 2011-2022 走看看