Como faço para que o analisador Attoparsec seja bem-sucedido sem consumir (como o parsec lookAhead)

Escrevi um analisador attoparsec rápido para examinar um arquivo aspx e descartar todos os atributos de estilo, e ele está funcionando bem, exceto por uma parte dele em que não consigo descobrir como fazer com que ele seja bem-sucedido na correspondência> sem consumi-lo.

Aqui está o que eu tenho:

anyTill = manyTill anyChar
anyBetween start end = start *> anyTill end

styleWithQuotes = anyBetween (stringCI "style=\"") (stringCI "\"")
styleWithoutQuotes = anyBetween (stringCI "style=") (stringCI " " <|> ">")
everythingButStyles = manyTill anyChar (styleWithQuotes <|> styleWithoutQuotes) <|> many1 anyChar

Eu entendo que é parcialmente por causa de como eu estou usando muitosTudo em everythingButStyles, é assim que eu estou ativamente lançando todas as coisas de estilos no chão, mas emstyleWithoutQuotes Eu preciso que ele combine ">" como um fim, mas não consuma, no parsec eu teria acabado de fazerlookAhead ">" mas eu não posso fazer isso na attoparsec.

questionAnswers(2)

yourAnswerToTheQuestion