我正在尝试使用 pyparsing 作为练习来解析统一的 diff 文件,但我无法得到正确的结果。这是我的差异文件中给我带来麻烦的部分:
(... some stuff over...)
banana
+apple
orange
第一行以“”开头,然后是“banana”。我有以下表达式来解析一行:
linestart = Literal(" ") | Literal("+") | Literal("-")
line = linestart.leaveWhitespace() + restOfLine
这在解析单行时有效,但是当我尝试解析整个文件时,“leaveWhitespace”指令使解析器从最后一行的末尾开始。在我的示例中,在解析“banana”之后,下一个字符是“\n”(因为 leaveWhitespace),解析器会尝试匹配“”或“+”或“-”,因此会引发错误。
我该如何正确处理?