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)
将永远循环。
我们在一些解析器中使用 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)
将永远循环。