目的
- 整頓されていないテキストデータをrubyで取り扱いたい
- コンテンツデータを作る人は、プログラマーではないことが多いので、スペースや改行、フォーマットなどを気にしない
解決策
- 正規表現でキャプチャする
- 名前キャプチャを出来ると便利(可読性UP)
- 長くなるので複数行で正規表現を定義したい(可読性UP)
早速
raw_text = "
お名前:にゃあはらさん
メールアドレス: akb48@nyaahara.comお電話番号:教えられないよ!"
/
お名前:\s?(?<name>.+)\n?
メールアドレス:\s?(?<email>.+)\n?
お電話番号:\s?(?<phone_number>.+)\n?
/xi =~ raw_text
実行結果サンプル
[1] pry(main)> raw_text = "
[1] pry(main)* お名前:にゃあはらさん
[1] pry(main)* メールアドレス: akb48@nyaahara.comお電話番号:教えられないよ!"
=> "\nお名前:にゃあはらさん\nメールアドレス: akb48@nyaahara.comお電話番号:教えられないよ!"
[2] pry(main)> /
[2] pry(main)* お名前:\s?(?<name>.+)\n?
[2] pry(main)* メールアドレス:\s?(?<email>.+)\n?
[2] pry(main)* お電話番号:\s?(?<phone_number>.+)\n?
[2] pry(main)* /xi =~ raw_text
=> 1
[3] pry(main)> name
=> "にゃあはらさん"
[4] pry(main)> email
=> "akb48@nyaahara.com"
[5] pry(main)> phone_number
=> "教えられないよ!"
参考リンク
Ruby の正規表現を複数行で書く