我有下面的代码,即读取txt根目录中的所有文件,根据给定扫描它们以查找特定单词regex并报告regex在每个文件中找到的单词。我遇到的问题是,如果一个 wod 被提及的次数超过一个(即在文件中的不同位置),它将尽可能多地被报告,我需要将其重新定位为唯一的,因此不包括重复项。例如在txt文件中:
I'm an engineer not a doctor
really, I'm not a doctor
这个词doctor被报告了两次,而我需要让它独一无二,即。我知道它在文件中就足够了。我的代码是:
package main
import (
"fmt"
"io/ioutil"
"log"
"path/filepath"
"regexp"
"strings"
)
func main() {
files, err := ioutil.ReadDir(".")
if err != nil {
log.Fatal(err)
}
p := []string{}
p = append(p, "engineer")
p = append(p, "doctor")
p = append(p, "chemical (permit)")
skills := strings.Join(p, "|")
fmt.Println(skills)
re := regexp.MustCompile(`(?i)` + skills)
for _, file := range files {
if strings.ToLower(filepath.Ext(file.Name())) == ".txt" {
fmt.Println(file.Name())
b, err := ioutil.ReadFile(file.Name()) // just pass the file name
if err != nil {
fmt.Print(err)
}
//fmt.Println(b) // print the content as 'bytes'
str := string(b) // convert content to a 'string'
matches := re.FindAllString(str, -1)
fmt.Println(matches, len(matches))
for _, j := range matches {
fmt.Println(j)
}
}
}
}
江户川乱折腾
相关分类