Python: 'q)+' 未被识别为内部或外部命令

Python: 'q)+' is not recognized as an internal or external command

Python这里是新手。

我有一个名为 zeroOrMore.py

的程序

它从标准输入中读取正则表达式 (regex)。

我这样调用程序:

python zeroOrMode.py (ab)*(p|q)+

导致此错误消息:

'q)+' is not recognized as an internal or external command, operable program or batch file.

我发现如果我用双引号将正则表达式括起来:

python zeroOrMode.py "(ab)*(p|q)+"

那就没有错误了

有没有一种方法可以在不将正则表达式用双引号引起来的情况下完成此操作?这是我的程序输入正则表达式的方式:

regex = sys.argv[1]

这不是 Python;这是命令。您提供给 Python 的正则表达式首先由命令提示符解释。管道 (|) 是管道输入到以下程序的批处理命令。基本上,CMD 是这样读取命令行的:

python zeroOrMode.py (ab)*(p    |    q)+

它正在尝试使用 (ab)*(p 获取 运行 zeroOrMode.py(我想你的意思是更多?)的结果并将输出传输到(不存在的)程序 q)+.

不幸的是,没有太多的解决方案。你总是可以像这样逃离管道:

python zeroOrMode.py (ab)*(p^|q)+

插入符号 (^) 将导致必须忽略下一个字符的任何特殊含义。