0

我想创建一个使用Superpower来匹配字符串的解析器,例如:

<<This is my text>>

即,由一对字符串(左和右)分隔的字符串。在这种情况下,分隔字符串是<<and >>

现在,我所拥有的只是一个仅在分隔符为单个字符时才有效的解析器:

public static TextParser<TextSpan> SpanBetween(char left, char right)
{
    return Span
        .MatchedBy(Character.Except(right).Many())
        Between(Character.EqualTo(left), Character.EqualTo(right));
}

我应该如何修改它leftright改为字符串?

4

1 回答 1

0
public static TextParser<TextSpan> SpanBetween(string left, string right)
{
    return Span
        .MatchedBy(Parse.Not(Span.EqualTo(right)).Then(p => Character.AnyChar).Many())
        .Between(Span.EqualTo(left), Span.EqualTo(right));
}

或与Span.Except

public static TextParser<TextSpan> SpanBetween(string left, string right)
{
    return Span
        .MatchedBy(Span.Except(right))
        .Between(Span.EqualTo(left), Span.EqualTo(right));
}

我假设,与您的问题所说的相反,您希望匹配分隔符之间的文本,而不是整个字符串,因为这是您的示例所显示的。

于 2021-05-13T05:30:20.717 回答