Rubyについて Part 10
■ このスレッドは過去ログ倉庫に格納されています
0246デフォルトの名無しさん
NGNG端的に言うと正規表現「だけ」で書くのは無理。文脈自由文法の世界だから。
ただ、 Perl では正規表現を独自拡張して、こういうのに対応しているね。
とはいえ、 racc/yacc を使えというのはさすがに大仰すぎると思う。
対処法1:
入れ子の数の限度が決まっているなら、その数まで対応するように書くことは
できる。たとえばその例題なら、/\w+\((.*?(\(.*?\))?.*?)\)/ とかね。
対処法2:
関数を自分で書く。開きカッコが来たら自分自身を呼んで、閉じカッコが来た
らそれまでスキャンした内容を返す関数を書くだけだから、簡単だと思う。
StringScanner とかあるし。
どうせ racc とかは、BNF(みたいなやつ)から関数を自動生成するためのプロ
グラムに過ぎないから、たいした手間じゃなきゃ自分で書く方が楽な場合もあ
る。
■ このスレッドは過去ログ倉庫に格納されています