Golang中如何在这个示例中查找匹配项
Golang中如何在这个示例中查找匹配项 你好,请帮忙,这里是原始数据:
str: = "fsdfsdfs {% randstr%} dfbdfbdf {% randstr%} gdfgdfg {% randstr%} fsd {% randstr%}"
如何查找并统计 {% randstr%} 这类匹配项的数量?
6 回复
我认为你可以使用 strings.Count 方法。
count := strings.Count( str, "{% randstr%}")
更多关于Golang中如何在这个示例中查找匹配项的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
提取 {% …%} 内的数据
好的,那如何提取 {% …%} 内的数据呢?))
我需要类似这样的功能,但当前实现无法正常工作((
https://play.golang.org/p/SOk6BTkno5Y
但是我该如何立即从括号中提取数据,我需要:
- 统计找到的元素数量
- 提取 {% …%} 内的数据
你需要使用任意索引函数找到标记({%…%}),然后提取其内容。类似这样:
len := len(token)
for pos := strings.Index(str, token); pos != -1 ; pos = strings.Index(str, token) {
item := strings.TrimSpace(str[pos:pos+len]))
str = strings.TrimSpace(str[pos+len:])
fmt.Println(item)
}
可以使用Go语言的regexp包来查找和统计匹配项。这里是一个完整的示例代码:
package main
import (
"fmt"
"regexp"
)
func main() {
str := "fsdfsdfs {% randstr%} dfbdfbdf {% randstr%} gdfgdfg {% randstr%} fsd {% randstr%}"
// 定义正则表达式模式
pattern := `\{% randstr%\}`
// 编译正则表达式
re := regexp.MustCompile(pattern)
// 查找所有匹配项
matches := re.FindAllString(str, -1)
// 统计匹配项数量
count := len(matches)
fmt.Printf("找到 %d 个匹配项:\n", count)
for i, match := range matches {
fmt.Printf("匹配项 %d: %s\n", i+1, match)
}
}
运行结果:
找到 4 个匹配项:
匹配项 1: {% randstr%}
匹配项 2: {% randstr%}
匹配项 3: {% randstr%}
匹配项 4: {% randstr%}
如果你只需要统计数量而不需要具体的匹配内容,可以简化为:
package main
import (
"fmt"
"regexp"
)
func main() {
str := "fsdfsdfs {% randstr%} dfbdfbdf {% randstr%} gdfgdfg {% randstr%} fsd {% randstr%}"
pattern := `\{% randstr%\}`
re := regexp.MustCompile(pattern)
count := len(re.FindAllString(str, -1))
fmt.Printf("找到 %d 个匹配项\n", count)
}
正则表达式说明:
\{和\}需要转义,因为它们本身是正则表达式的特殊字符{% randstr%}按字面匹配,中间的空格也会被匹配FindAllString的第二个参数-1表示查找所有匹配项

