>>611
昔のソースコードを漁ってやっと思い出した
sepBy は使ってなかった

結局これで一応できる

many (try (manyTill letter $ string "hoge") <|> many1 letter)

かなり不格好になってしまった、もっと洗練された書き方があると思う

また、"hogeABChogeEF" の結果が ["", "ABC", "EF"] となって、
sepBy とは微妙に挙動が違うので注意

「文字列 s の直前まで任意の文字列にマッチするパーサー until」が作れれば、
until s `sepby` string s でできると思う
昔のソースコードには試みた形跡があるけど、面倒になって諦めたみたい