我有一个几乎可以包含任何字符的字符串。在字符串内部有分隔符{{{
。
例如:afskjdfakjsdfkjas{{{fasdf
。
使用attoparsec,编写Parser ()
的惯用方式是什么,它会在{{{
之前跳过所有字符,但不会消耗{{{
?
答案 0 :(得分:2)
使用attoparsec
的{{1}}(应用解析器而不消耗任何输入)和lookAhead
编写一个解析器,消耗所有内容(但不包括){{1}分隔符。然后,您可以自由地应用该解析器并将其结果抛弃。
manyTill
在GHCi中:
{{{
答案 1 :(得分:0)
你可以用这样稍微强硬的方式做到这一点:
foo = many $ do
Just c <- fmap (const Nothing) (try $ string "{{{") <|> fmap Just anyChar
return c
或者你可以像这样使用这个辅助函数manyTill
:
foo = manyTill anyChar (try $ string "{{{")