Go正则表达式匹配字符串,替换字符串方式

 更新时间:2025年02月25日 09:18:56   作者:Laravel技术社区  
介绍了Go语言中使用正则表达式进行字符串匹配和替换的方法,包括匹配单个子字符串和所有子字符串,个人经验分享,旨在为读者提供实用的编程技巧,并鼓励大家支持脚本之家

Go正则表达式匹配字符串,替换字符串

正则表达式

package main

import (
    "fmt"
    "regexp"
)

func main() {
    match, err := regexp.MatchString("h[a-z]+.*d$", "hello world")
    if err != nil {
        panic(err)
    }
    fmt.Println(match)

    match, err = regexp.MatchString("h[a-z]+.*d$", "ello world")
    if err != nil {
        panic(err)
    }
    fmt.Println(match)
}

// $ go run main.go
// 输出如下
/**
  true
  false
*/

匹配所有子字符串

package main

import (
    "fmt"
    "regexp"
)

func main() {
    c, err := regexp.Compile("h[a-z]")
    if err != nil {
        panic(err)
    }

    res := c.FindAllString("hello world", -1)
    fmt.Printf("res = %v\n", res)

    res2 := c.FindAllString("hello world hi ha h1", -1)
    fmt.Printf("res2 = %v\n", res2)
}

// $ go run main.go
// 输出如下
/**
  res = [he]
  res2 = [he hi ha]
*/

替换所有子字符串

package main

import (
    "fmt"
    "regexp"
)

func main() {
    c, err := regexp.Compile("h[a-z]")
    if err != nil {
        panic(err)
    }

    res := c.ReplaceAll([]byte("hello world"), []byte("?"))
    fmt.Printf("res = %s\n", res)

    res2 := c.ReplaceAll([]byte("hello world hi ha h1"), []byte("?"))
    fmt.Printf("res2 = %s\n", res2)
}

// $ go run main.go
// 输出如下
/**
  res = ?llo world
  res2 = ?llo world ? ? h1
*/

匹配中文

package main

import (
    "fmt"
    "regexp"
)

func main() {
    match, err := regexp.MatchString("\\x{4e00}-\\x{9fa5}", "hello world")
    if err != nil {
        panic(err)
    }
    fmt.Println(match)

    match, err = regexp.MatchString("\\p{Han}+", "hello 世界")
    if err != nil {
        panic(err)
    }
    fmt.Println(match)
}

// $ go run main.go
// 输出如下
/**
  false
  true
*/

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Go使用chan或context退出协程示例详解

    Go使用chan或context退出协程示例详解

    这篇文章主要为大家介绍了Go使用chan或context退出协程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Go分布式链路追踪实战探索

    Go分布式链路追踪实战探索

    这篇文章主要为大家介绍了Go分布式链路追踪实战示例探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Go语言题解LeetCode888公平糖果交换示例详解

    Go语言题解LeetCode888公平糖果交换示例详解

    这篇文章主要为大家介绍了Go语言题解LeetCode888公平糖果交换示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Golang信号量设计实现示例详解

    Golang信号量设计实现示例详解

    这篇文章主要为大家介绍了Golang信号量设计实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go语言函数的延迟调用(Deferred Code)详解

    Go语言函数的延迟调用(Deferred Code)详解

    本文将介绍Go语言函数和方法中的延迟调用,正如名称一样,这部分定义不会立即执行,一般会在函数返回前再被调用,我们通过一些示例来了解一下延迟调用的使用场景
    2022-07-07
  • golang使用json格式实现增删查改的实现示例

    golang使用json格式实现增删查改的实现示例

    这篇文章主要介绍了golang使用json格式实现增删查改的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 深入了解Go语言中web框架的中间件运行机制

    深入了解Go语言中web框架的中间件运行机制

    大家在使用iris框架搭建web系统时,一定会用到中间件。那么你了解中间件的运行机制吗?你知道为什么在iris和gin框架的请求处理函数中要加c.Next()函数吗?本文就和大家一起探究该问题的答案
    2023-02-02
  • golang获取变量或对象类型的几种方式总结

    golang获取变量或对象类型的几种方式总结

    在golang中并没有提供内置函数来获取变量的类型,但是通过一定的方式也可以获取,下面这篇文章主要给大家介绍了关于golang获取变量或对象类型的几种方式,需要的朋友可以参考下
    2022-12-12
  • go:gin输出日志文件方式

    go:gin输出日志文件方式

    这篇文章主要介绍了go:gin输出日志文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • golang频率限制 rate详解

    golang频率限制 rate详解

    这篇文章主要介绍了golang频率限制 rate详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论