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
,甚至不需要解析操作