Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python脚本执行时无法理解pcregrep的返回代码_Python_Regex_Pcre - Fatal编程技术网

从python脚本执行时无法理解pcregrep的返回代码

从python脚本执行时无法理解pcregrep的返回代码,python,regex,pcre,Python,Regex,Pcre,我正在尝试使用pcregrep命令解析一组正则表达式。此命令将从python执行,输出将格式化并存储在python数据结构中。我能够执行除以下正则表达式之外的所有正则表达式 "^.{159}-{51}\s*\n.{159}Attempting to start (?:ORM(R)?|CPS) channel\s*\n.*in\s*\n.*init_n_config\s*\n.*H_ICM_C_MCC_CHANNEL_MANAGER\.C\s*\n.*at line\s*\n.*\d+\s*$

我正在尝试使用pcregrep命令解析一组正则表达式。此命令将从python执行,输出将格式化并存储在python数据结构中。我能够执行除以下正则表达式之外的所有正则表达式

"^.{159}-{51}\s*\n.{159}Attempting to start (?:ORM(R)?|CPS)  channel\s*\n.*in\s*\n.*init_n_config\s*\n.*H_ICM_C_MCC_CHANNEL_MANAGER\.C\s*\n.*at  line\s*\n.*\d+\s*$"
我正在打印错误代码,以及通过从python执行pcregrep命令得到的消息

我得到的错误代码为256,消息为空 我正在使用python的命令实用程序。我正在打印cmd_输出[0](用于返回代码)和command_输出[1](用于错误消息) 我试着从命令行执行这个命令,效果非常好。它打印与上述正则表达式匹配的所有匹配行

这里有我遗漏的东西吗。只有上面的正则表达式给出了错误。其余的表达式工作正常。

返回代码256(当通过各种Python子流程调用方法使用它时)可能意味着该子流程使用exitcode 1正常退出,对于grep来说,这意味着它没有找到任何东西。因此,这可能不是一个错误,只是找不到所需的regexp

现在,该regexp包含几个特殊字符,如星号和反斜杠。有很多方法以错误的方式移交这些文件,因此它们会被解释,从而在过程中被破坏。我建议大家看看这些要点


如果您能告诉我们更多关于如何使用这个regexp模式的信息,会有所帮助。E请发布使用该正则表达式的代码以及结果发生的情况等。

如果您可以添加用于执行此正则表达式的代码片段,将会有所帮助。谢谢您提供的信息。但奇怪的是,这项工作很好,即通过命令行执行时,它会显示匹配的行。不幸的是,我无法向您发送我试图匹配的线路。因为它们有到我们的源代码的路径等等……那么您可能在将命令行传递到
pcregremp
的方式中有错误。很可能是关于引用。您可能希望调用一个小的shell脚本,而不是
pcregremp
,以了解实际传递的内容。在这个shell脚本中,您可以这样做:
fori;不打印“%q\n”$i;完成>/tmp/bla
。然后查看
/tmp/bla
以查看传递的所有参数。在执行之前,我已经在代码中打印了它。跟踪是“检查“^.{159}-{51}\s*\n.{159}试图在\s*\n.*init\u n\u config\s*\n.*行\s*\n.*H\u ICM\u C\u MCC\u channel\u MANAGER\.C\s*\n.*中启动(?:ORM(R)?CPS)channel\s*\n.*时出错”执行pcregrep命令时出错,错误是执行pcregrep命令时出错,代码是256'我从跟踪中获取文本,然后从命令行手动执行命令,它可以工作,即从python传递到pcregrep的正则表达式可以通过命令行完美工作我不喜欢捕捉幽灵(在调试输出中看不到的bug,只是在行为中),因此我强烈建议使用我打印参数的方式(即对每个参数使用
printf“%q\n”“$I”
)。否则,您选择的查看值的方式可能会破坏问题。当然..也会尝试