実践 Atomと正規表現で検索置換してみた2
人からもらったCSVのデータを整形してRubyのハッシュや配列
にするのに、まだウロ覚えの正規表現を使ってみた。
Part1では必要となる正規表現のおさらいを行ったので、
当ページではAtomでの実際の検索置換をPart2として行ってみる。
なお、あくまで正規表現の練習なので、最短のやり方
では ない
かもしれませんが、ご容赦下さい。
元のデータ
Tokyo,130,,
Kanagawa,110,,
Saitama,105,,
Chiba,108,,
最終形態
この状態にしたい。
{ Tokyo: 130, Kanagawa: 110, Saitama: 105, Chiba: 108 }
Step1 カンマを除去
これは素直に以下の様にしてReplace All
すればOK。
Steap2 Atomで正規表現モードにする
検索
→ 置換
メニューで検索置換機能を呼び出し、以下の画像の *
の部分(青と白で反転している部分)をクリックして正規表現オプションをONにする。
Step3 文字列の後ろにセミコロンと半角スペースを加える
Before
Tokyo130
Kanagawa110
Saitama105
Chiba108
After
Tokyo: 130
Kanagawa: 110
Saitama: 105
Chiba: 108
正規表現の書き方
まず[a-z]
で英字
を抽出するが、これだけだと英字が1つ1つ別に抽出されてしまう。そこで[a-z]+
とする。これは+
が1回以上の繰り返しのうち最長
を意味するからである。
置換のやり方
正規表現としては[a-z]+
でOKだが、実際に行いたいのは抽出である。まずは、AtomoのFind in a current buffer
となっている入力欄に抽出の正規表現を入力したら全体をカッコで囲む
、その結果、上記の画像の様に([a-z]+)
になる。
続いて、抽出後にどうしたいか
を入力する。AtomのReplace in current buffer
の入力欄に、まず$1
と入力する。この$1
はカッコで囲った正規表現の部分に対応している。なお、今回は一箇所しかないので$1
となっているが、複数の場合は$1
$2
・・・となる。
抽出した部分の後にコロンと半角スペースを付け足すので、最終的には$1:
として(半角スペースと分かりくいけど)Replace
ボタンをクリックする。実行前に抽出箇所を確認したい場合はFind all
をクリックすればよい。
step4 行末にカンマと半角スペースを追加
After
Tokyo: 130,
Kanagawa: 110,
Saitama: 105,
Chiba: 108,
step5 改行を除去
改行は\n
なので以下の様になる。
after
Tokyo: 130, Kanagawa: 110, Saitama: 105, Chiba: 108,
step6 最後は手作業
ハッシュの開始や閉じは1つだけなので手作業で入力し、また最後のカンマも削除して以下の様になり終了。
{ Tokyo: 130, Kanagawa: 110, Saitama: 105, Chiba: 108 }
参考
初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」
Author And Source
この問題について(実践 Atomと正規表現で検索置換してみた2), 我々は、より多くの情報をここで見つけました https://qiita.com/gestalt/items/c79cdaf4db9edd67e988著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .