¿Cómo puedo hacer que el analizador Attoparsec tenga éxito sin consumir (como parsec lookAhead)

Escribí un rápido analizador attoparsec para recorrer un archivo aspx y eliminar todos los atributos de estilo, y está funcionando bien, excepto por una parte en la que no puedo descubrir cómo hacer que tenga éxito en la coincidencia> sin consumirlo.

Esto es lo que tengo:

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

Entiendo que es en parte debido a cómo estoy usando muchos. Hasta en todos los estilos, pero así es como estoy eliminando activamente todas las cosas de estilos en el suelo, pero enstyleWithoutQuotes Lo necesito para que coincida con ">" como un final, pero no lo consuma, en parsec lo habría hecholookAhead ">" Pero no puedo hacer eso en attoparsec.

Respuestas a la pregunta(2)

Su respuesta a la pregunta