您现在的位置是:首页 > 编程 > 

Go程序例子(54):正则表达式

2025-07-22 04:16:03
Go程序例子(54):正则表达式 Go 提供了对正则表达式的内置支持。以下是一些在 Go 中常见的正则表达式相关任务示例。代码语言:go复制package main import ( "bytes" "fmt" "regexp" ) func main() { // 这用于测试某个模式是否匹配字符串。

Go程序例子(54):正则表达式

Go 提供了对正则表达式的内置支持。以下是一些在 Go 中常见的正则表达式相关任务示例。

代码语言:go复制
package main

import (
    "bytes"
    "fmt"
    "regexp"
)

func main() {
		// 这用于测试某个模式是否匹配字符串。
    match, _ := regexp.MatchString("p([a-z]+)ch", "peach")
    fmt.Println(match)
		// 上面我们直接使用了字符串模式,但对于其他正则表达式任务,您需要编译一个优化的 Regexp 结构体。
    r, _ := regexp.Compile("p([a-z]+)ch")
		// 这些结构体上有许多可用的方法。以下是一个与之前类似的匹配测试。
    fmt.Println(r.MatchString("peach"))
		// 这用于查正则表达式的匹配项。
    fmt.Println(r.FindString("peach punch"))
		// 这同样查第一个匹配项,但返回的是匹配项的起始和结束索引,而不是匹配的文本。
    fmt.Println("idx:", 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("all:", 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变体。MustCompile在遇到错误时会引发panic而非返回错误,这使得它在用于全局变量时更为安全。
    r = regexp.MustCompile("p([a-z]+)ch")
    fmt.Println("regexp:", r)
		// 正则表达式包同样能够用于将字符串的子集替换为其他值。
    fmt.Println(r.ReplaceAllString("a peach", "<fruit>"))
		// Func变体允许您使用指定函数来转换匹配的文本。
    in := []byte("a peach")
    out := r.ReplaceAllFunc(in, bytes.ToUpper)
    fmt.Println(string(out))
}

运行结果:

代码语言:javascript代码运行次数:0运行复制
➜ go run regular-expressi/regular-expressi.go       
true
true
peach
idx: [0 5]
[peach ea]
[0 5 1 ]
[peach punch pinch]
all: [[0 5 1 ] [6 11 7 9] [12 17 1 15]]
[peach punch]
true
regexp: p([a-z]+)ch
a <fruit>
a PEACH

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1174600.html

相关标签:无
上传时间: 2025-07-21 14:32:03
留言与评论(共有 12 条评论)
本站网友 结肠瘘
22分钟前 发表
[[0 5 1 ] [6 11 7 9] [12 17 1 15]] [peach punch] true regexp
本站网友 tengxunqq
28分钟前 发表
"<fruit>")) // Func变体允许您使用指定函数来转换匹配的文本
本站网友 成寿寺二手房出售
5分钟前 发表
fmt.Println(r.FindAllString("peach punch pinch"
本站网友 个税计算器2013
4分钟前 发表
r = regexp.MustCompile("p([a-z]+)ch") fmt.Println("regexp
本站网友 龙虾吃什么
18分钟前 发表
但对于其他正则表达式任务
本站网友 重庆房产信息网
8分钟前 发表
代码语言:go复制package main import ( "bytes" "fmt" "regexp" ) func main() { // 这用于测试某个模式是否匹配字符串
本站网友 心理年龄
19分钟前 发表
_
本站网友 房屋买卖合同注意事项
9分钟前 发表
fmt.Println(r.FindStringSubmatchIndex("peach punch")) // 这些函数的 All 变体适用于输入中的所有匹配项
本站网友 种植牙后
10分钟前 发表
in
本站网友 清宫生男生女表
24分钟前 发表
并使用了像MatchString这样的名称
本站网友 格林童趣儿童摄影团购
4分钟前 发表
[[0 5 1 ] [6 11 7 9] [12 17 1 15]] [peach punch] true regexp