最近、正規表現ネタが続いているので、今回も正規表現ネタをやっていきたいと思います!
例に習って今回もサクラエディタを使って説明して行きます。
突然ですが、CSVファイルというモノをご存知でしょうか?
Comma Separated Value の略で、テキストがカンマ区切りのデータのことを指します。
”AAA”,”BBB”,"CCC"
今は色んなデータ形式がありますが、今でもカンマ区切りでやりとりをするシステムは数多く存在しており、度々使われています。
今回はそんなCSVファイルを下の画像ような改行区切りのデータから正規表現で作る方法を紹介していきたいと思います。
ただし、厳密にはCSVファイルには様々なルールや制約が存在しますが、今回は単純なカンマ区切りのファイルにするということを主眼に説明していきいます。
カンマずつに区切りたい場合、データの中にカンマが含まれている場合、そのままカンマ区切りのデータにしてしまうと項目の数がおかしなことになります。
そこで、CSVファイルのデータを作成する場合は、データの前後に " (ダブルクォーテーション)を入れて、データとしてのカンマと区切り文字としてのカンマを判別します。
そこで、まず行の先頭を表す正規表現、 『^』を指定します。
すると、行の先頭が選択されます。
置換後の文字列に " (ダブルクォーテーション)を指定して変換すると、行の先頭に " (ダブルクォーテーション)が入ります。
続いて、以前紹介した、行の末尾を表現する正規表現『$』を指定して、末尾にも " (ダブルクォーテーション)を入れます。
そして、改行を ,(カンマ)に変換します。
ただし、テキストには複数の改行のパターンが存在します。
通常使われる改行はOSやテキストファイルによって異なります。
Windowsでは、標準の改行はCRLF(キャリッジリターン・ラインフィード)で正規表現は『¥r¥n』で表現します。
改行の種類はサクラエディタの右下で確認出来ます。
Linuxでは、標準の改行はLF(ラインフィード)で正規表現は『¥n』で表現します。
Macでは、標準の改行はCR(キャリッジリターン)で正規表現は『¥r』で表現します。
話は戻りまして、例ではキャリッジリターンをカンマに変換します。
これで完成! と思いきや、末尾に余計なカンマが挿入されてしまいました。
これは、ファイルの末尾に改行が入っていたからです。
サクラエディタではファイルの末尾は[EOF](End Of File)で表現されています。
なので、末尾の改行を削除してから、再度置換を行います。
これで、今度こそキレイにCSVファイルが完成しました♪
今回はあくまで、例なので実用性は皆無かもしれませんが、この正規表現を使って、作業効率アップを図られるようにしてみては如何でしょうか。
正規表現 | 説明 |
^ | 行の先頭を表現 |
$ | 行の末尾を表現 |
¥r¥n | Windowsの改行キャリッジリターン・ラインフィードを表現 |
¥n | Linuxの改行ラインフィードを表現 |
¥r | Macの改行キャリッジリターンを表現 |