本文實例講述了go語言文件正則表達式搜索功能。分享給大家供大家參考,具體如下:
復制代碼 代碼如下:
package main
import (
"fmt"
"os"
"path/filepath"
"regexp"
)
func main() {
// 命令行參數
args := os.Args
// 檢查參數
if len(args) == 1 {
fmt.Println("ff is a file find tool. use like bottom")
fmt.Println("ff [dir] [regexp]")
return
}
if len(args) 3 {
fmt.Println("args 3")
return
}
fileName := args[1]
pattern := args[2]
file, err := os.Open(fileName)
if err != nil {
fmt.Println(err)
return
}
fi, err := file.Stat()
if err != nil {
fmt.Println(err)
return
}
if !fi.IsDir() {
fmt.Println(fileName, " is not a dir")
}
reg, err := regexp.Compile(pattern)
if err != nil {
fmt.Println(err)
return
}
// 遍歷目錄
filepath.Walk(fileName,
func(path string, f os.FileInfo, err error) error {
if err != nil {
fmt.Println(err)
return err
}
if f.IsDir() {
return nil
}
// 匹配目錄
matched := reg.MatchString(f.Name())
if matched {
fmt.Println(path)
}
return nil
})
}
PS:這里再為大家提供2款非常方便的正則表達式工具供大家參考使用:
JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg
希望本文所述對大家Go語言程序設計有所幫助。
您可能感興趣的文章:- Go語言中TCP/IP網絡編程的深入講解
- Go語言正則表達式用法實例小結【查找、匹配、替換等】
- golang使用正則表達式解析網頁
- Go語言正則表達式示例
- golang如何實現抓取IP地址的蜘蛛程序詳解