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 表示查找所有匹配项
回到顶部