Parsecの練習 〜 hrefの値を取り出す 〜
Parsecを勉強したので、
htmlのアンカータグのhref属性の値を取り出す処理を書いた。
標準入力から読み込んだテキストから、
href="aaaa"といったところから、 "aaaa"をとりだす。
import System.IO (getContents) import Text.ParserCombinators.Parsec import Data.List (null) main = getContents >>= return . parse html "(input)" >>= return . either show unlines >>= putStr html = do many (noneOf "h") s <- many href' return . filter (not . null) $ s href' = do s <- try href <|> (string "h" >> return []) many (noneOf "h") return s href = do string "href" spaces char '=' spaces value value = do oneOf "\"\'" v <- many (noneOf "\"\'") oneOf "\"\'" return v