見出し画像

正規表現に悩んだ話

40万程度のレコードを記録したCSVがある。Excelで処理するにはレコード数が大きすぎて処理が重い。また、Accessに取り込むにはカラムが整形されていないので、テキスト処理しないといけない。そんな時に正規表現を使って解決した。偉く時間が掛かったので、自分にはプログラミングは向いていないと改めて感じた。しかし、時間を掛けて学んだので記録として残す。一般事務の範疇でもExcelを使っては処理しきれない時には、有効になるので覚えておくと便利だ。

例)正規表現

下記のようなCSVを処理する。CSVのレコードをデータベース的に考えれば、そもそも正規化されていないので、何でこのような形式でOutputされているのか理解に苦しむが、処理しなくてはいけない状況だったので解決方法を模索した。

name, g
あら汁 (123456789),100
あら汁 (123456788),105

解決するには、以下の正規表現を使う

.\(\d+\)
正規表現の入力

解説

VSCodeのリファレンスは下記を参照してほしい

まず、”\”は、バックスラッシュというが、macbook airではオプションキーに¥キーを押すと入力できる。これはエスケープ機能というのだが、正規表現で使われる文字を対象にしたい時に使用する。今回は半角括弧も正規表現で使用される。“.”は任意の一文字を示す。“\(”や”\)”は、括弧を示す。“\d”は、数値を示す。”+”は直前のパターンを繰り返す。

ちなみに、実際はWindowsのサクラエディタで解決したのだが、サクラエディタはエスケープ機能は¥マークで表現する。40万行程度であれば読み込めたが、VSCodeでは読み切れるか実験していないので、時間がある時に試してみたいと思う。

結果

うまくいけば、下記の結果となる。

置換前
置換後

おわり!