我正在使用 Scala 中的本机解析器组合器库,我想解析输入的某些部分,而不是其他部分。具体来说,我想丢弃我关心的输入之间的所有任意文本。例如,使用此输入:
begin
Text I care about
Text I care about
DONT CARE
Text I don't care about
begin
More text I care about
...
现在我有:
object MyParser extends RegexParsers {
val beginToken: Parser[String] = "begin"
val dontCareToken: Parser[String] = "DONT CARE"
val text: Parser[String] = not(dontCareToken) ~> """([^\n]+)""".r
val document: Parser[String] = begin ~> text.+ <~ dontCareToken ^^ { _.mkString("\n") }
val documents: Parser[Iterable[String]] = document.+
但我不知道如何忽略后面DONT CARE
和直到下一个的文本begin
。具体来说,我不想对该文本的形式做出任何假设,我只想在下begin
一条语句处重新开始解析。