Python 如何通过pyparsing得到包含多个关键词的整行?

Python 如何通过pyparsing得到包含多个关键词的整行?,python,pyparsing,Python,Pyparsing,我正在使用pyparsing解析日志文件。我想得到包含关键字的整行: 输入/输出错误 磁盘已满 超出配额 我的代码如下: import pyparsing as pp line = pp.Combine(pp.Regex(".*") + pp.CaselessLiteral("Input/Output error") ^ \ pp.CaselessLiteral("Disk full") ^ pp.CaselessLiteral("Quota Exceed") + \

我正在使用
pyparsing
解析日志文件。我想得到包含关键字的整行:

  • 输入/输出错误
  • 磁盘已满
  • 超出配额
我的代码如下:

import pyparsing as pp
line = pp.Combine(pp.Regex(".*") + pp.CaselessLiteral("Input/Output error") ^ \
       pp.CaselessLiteral("Disk full") ^ pp.CaselessLiteral("Quota Exceed") + \ 
       pp.Regex(".*"))
在匹配结果中,它只包含关键字,如
“磁盘已满”
。它不包括整条线


有人知道如何获得结果中的整行吗?

尝试将此解析操作附加到
行中:

def return_containing_line(s, l, t):
    # use pyparsing line builtin to extract the current line text
    # at location 'l' in input string 's'
    return pp.line(l, s)
line.addParseAction(return_containing_line)
这个解析器真的工作了吗?我认为前导正则表达式会占用整行,因为它不会对下面的文字表达式进行任何前瞻。为什么不删除
Regex
术语,只使用
searchString
?或者,如果您使用
scanString
,您将获得每个匹配的
(tokens,startoc,endloc)
元组,您可以使用
startoc
和输入字符串调用
pp.line
,甚至不需要解析操作