我希望解析的是用双引号引用的任何正则表达式。例如,“([AZ]+[AZ]+[C])”
到目前为止,我在 Scala 中使用 fastparse 库尝试过以下内容:
def regex[_: P]: P[Unit] = P(AnyChar.rep).log
def quotedRegex[_: P]: P[Unit] = P("\"" ~ regex ~ "\"").log
val Parsed.Failure(label, index, extra) = parse(""""str"""", quotedRegex(_))
但这会引发异常:
+quotedRegex:1:1, cut
+regex:1:2, cut
-regex:1:2:Success(1:6, cut)
-quotedRegex:1:1:Failure(quotedRegex:1:1 / "\"":1:6 ..."\"str\"", cut)
label = "\""
index = 5
trace = TracedFailure((any-character | "\""),(any-character | "\""),Parsed.Failure(Expected "\"":1:6, found ""))
到目前为止我所理解的是,正则表达式解析器也在使用最后一个双引号。但我无法弄清楚如何避免这种情况!我认为我们需要编写某种前瞻,并以某种方式避免解析最后一个字符,但不确定如何执行此操作。
请帮忙。