当前位置 博文首页 > go语言文件正则表达式搜索功能示例

    go语言文件正则表达式搜索功能示例

    作者:aotian16 时间:2021-05-10 18:25

    本文实例讲述了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语言程序设计有所帮助。

    js
    下一篇:没有了