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

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

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。