从python脚本执行时无法理解pcregrep的返回代码
我正在尝试使用pcregrep命令解析一组正则表达式。此命令将从python执行,输出将格式化并存储在python数据结构中。我能够执行除以下正则表达式之外的所有正则表达式从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*$
"^.{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”
)。否则,您选择的查看值的方式可能会破坏问题。当然..也会尝试