普通に1文字ずつ条件分岐にかけりゃええんちゃう
\の文字があったら文字カウントせずにフラグ立てる→フラグ立った状態で次の文字を調べて . なら特殊処理、 . 以外なら前の\の分含めて文字カウント2つ とか

特殊文字が読めるかどうかは忘れた.\nとか\.とかは1文字としてカウントされるんだったっけ? ちょっと調べてみるわ