Итак, я пишу небольшой анализатор, который извлекает все содержимое тега с конкретным классом, например, Некоторый контент -> «Некоторый контент»
Я буду анализировать большой файл html , но мне не волнует весь шум, поэтому идея была в Потребляйте все символы, пока я не достигну , чем я бы употреблял все символы (контент) до и вернуть строку контента.
Это работает нормально, если последним элементом в файле является мой тег td.liste , но если у меня есть какой -то текст после него или EOF , то мой анализатор потребляет его и бросает неожиданный конец Ввод < /code> Если вы выполняете ParsemyTest Test3 < /code>. < /p>
- edit
См. End of test3 < /code> Чтобы понять, что такое случай края. < /p>
Вот мой код до сих пор: < /p>
import Text.Parsec
import Text.Parsec.String
import Data.ByteString.Lazy (ByteString)
import Data.ByteString.Char8 (pack)
colOP :: Parser String
colOP = string ""
colCL :: Parser String
colCL = string ""
col :: Parser String
col = do
manyTill anyChar (try colOP)
content Either ParseError [String]
parseMyTest test = parse cols "test" test
btos :: ByteString -> String
btos = read . show
Подробнее здесь: https://stackoverflow.com/questions/389 ... ser-at-eof