- 締切済み
正規表現でテキスト処理をしてDBに戻す
プログラミングもrubyも初心者です。 2008121407030202,14(1,2)13,4(3,8,9,15)7,12-(5,6,11)10 2008122109050607,(*3,6)12,4(1,13)-(7,11)-(8,9)5=2 10 2009011008010309,3,8,13,9(1,12)(2,6)(10,7)(4,11)5 ↓ 2008121407030202,14,(1,2),13,4,(,3,8,9,15,),7,12,-,(,5,6,11,),10, 2008122109050607,(,*,3,6,),12,4,(,1,13,),-,(,7,11,),-,(,8,9,),5,=2, ,10, 上段のようなテキストを下段のように数字ごとに区切ってDBに戻したいと考えています。rubyに読みこんで正規表現でどうにかして配列に入れていくのかと思いますが どこから手を付ければいいか取っ掛かりが分かりません。 考え方や参考になるサイトでも結構ですのでご教授ください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ki073
- ベストアンサー率77% (491/634)
既にnotnotさんが回答されていますが、記号が続いている部分がうまくいっていないようです 数字が連続する場合はまとめてカンマをつけ、その他の文字は一文字ずつカンマを入れています。 改行の扱いや文字列の最後の扱いは分かりませんが、近いのではないかと思います。 str="文字列" str.gsub(/(\d+|.),?/){|s| $1+","} ところで、何のために区切るのでしょうか? ちょっとおせっかいかな。
- notnot
- ベストアンサー率47% (4900/10359)
まずは何をしたいのか明確にすることからです。 数字と記号の間にカンマが無い場合にカンマを入れるという事かと思ったけどそうでもないようで、 結果の1つ目の括弧の後にカンマが無いですね。 これが書き間違いで、「数字と記号の間にカンマが無い場合にカンマを入れる」ということであれば、 a="対象文字列" b=a.gsub(/\d+/,",\\&,").gsub(/,+/,",").gsub(/^,/,"") ですかね。数字の前後にカンマを入れて、その後で、連続するカンマと、行頭のカンマを処理します。