登录
首页 >  Golang >  Go问答

使用正则表达式在命令行终端和Golang中匹配结果不一致的原因是什么?

来源:stackoverflow

时间:2024-03-06 15:57:22 195浏览 收藏

今天golang学习网给大家带来了《使用正则表达式在命令行终端和Golang中匹配结果不一致的原因是什么?》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

在cmd终端执行命令和在golang中执行cmd命令的两种不同结果

cmd

c:\users\administrator>cmd /c tasklist | findstr /r /i "\"
cmd.exe                       4852 console                    1      5,676 k
cmd.exe                      11736 console                    1      4,836 k

golang

func main() {
    cmd := exec.Command("cmd.exe", "/C", "tasklist", "|", "findstr", "/R", "/I", "cmd.exe")
    output, err := cmd.Output()
    if err != nil {
        panic(err)
    }
    fmt.Println(string(output))

    // Use regular filtering
    cmd2 := exec.Command("cmd.exe", "/C", "tasklist", "|", "findstr", "/R", "/I", "\\")
    output, err = cmd2.Output()
    if err != nil {
        panic(err)
    }
    fmt.Println(string(output))
}

result:
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_demo_go.exe
cmd.exe                       4852 Console                    1      5,380 K
cmd.exe                      11816 Console                    1      5,044 K

panic: exit status 1

正确答案


感谢您的友好回复。最后我是这样解决的:

cmd := exec.Command("cmd.exe", "/C", "tasklist", "|", "findstr", "/R", "/I", "cmd.exe")
output, _ := cmd.Output()
fmt.Println(string(output))
//***************************************************************************//
cmd1 := exec.Command("cmd.exe", "/C", "tasklist")
cmd2 := exec.Command("findstr", "/R", "/I", "\\")
cmd2.Stdin, _ = cmd1.StdoutPipe()
cmd1.Start()
data, _ := cmd2.Output()
cmd1.Wait()
fmt.Println(string(data))

result:

Result of regular expression not used
cmd.exe                       5188 Console                    1      6,184 K
cmdcmd.exe                    1260 Console                    1      4,980 K

Results of using regular expressions
cmd.exe                       5188 Console                    1      6,184 K

第二种方式虽然麻烦一点,但是确实很有用。请问有没有更好的办法?

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>