Go程序例子(54):正则表达式
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组装电脑配置单推荐报价格
上传时间: 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 |