我想使用subprocess:grep -e '^commit [a-z0-9]{40}'
当我直接在终端中调用此命令时,除非我使用反斜杠转义大括号,否则它不起作用,如:grep -e '^commit [a-z0-9]\{40\}'
当我尝试使用转义字符将此字符串传递给使用python中的Popen的命令时,它不起作用。这是我尝试过的:
grepCommand = ['grep', '-e', "'^commit [a-z0-9]\\{{{0}\\}}'".format("40")]
grepCommand = ['grep', '-e', "'^commit [a-z0-9]\\\\{{{0}\\\\}}'".format("40")]
grepCommand = ['grep', '-e', "^commit [a-z0-9]\\{{{0}\\}}".format("40")]
grepCommand = ['grep', '-e', "^commit [a-z0-9]\\\\{{{0}\\\\}}".format("40")]
如何在python中正确格式化这个字符串,以便我可以通过Popen将它传递给grep?
答案 0 :(得分:1)
列表已经是参数分隔,因此不需要'
的额外引用:
grepCommand = ['grep', '-e', r"^commit [a-z0-9]\{{{0}\}}".format("40")]