pyparsing 优化跳过剩余的行

pyparsing optimize skip rest of line

我们在一些解析器中使用 to_eol = SkipTo(lineEnd(), include=True) 来吃掉该行的其余部分。由于 SkipTo 在每个位置重新评估内部解析器,我试图使用 Regex.

来简化工作

由于lineEnd只能识别\n,我认为Regex('[^\n]*\n')应该可以。

它没有,我不太明白为什么。我已经尝试了很多变体 - 添加多行正则表达式模式,连续接受多个换行符等,但是 none 其中有效。

您可能被 pyparsing 的默认空格跳过和正则表达式多行绊倒了。 Pyparsing 将助手 restOfLine 定义为 Regex(r".*").leaveWhitespace().setName("rest of line")。请注意,这可能匹配一个空字符串,因此 OneOrMore(restOfLine) 将永远循环。