英語表記の日付を数値に変換する
以下のように英語表記の日付が大量にあり、それを数字だけの日付に変換する必要が出てきた。
February 24th, 2013
March 1st, 2013
June 18th, 2013
すなわち、上の場合以下のようにしたい。
2013/02/24
2013/03/01
2013/06/18
これは Excel を使えば簡単にできるようだが、なぜかうまくいかない。
そこで別の方法でやってみることにした。テキストエディタと FileMaker を使う方法だ。
環境:macOS Catalina Version 10.15.6 (英語) 、Sublime Text Version 3.2.2、FileMaker Pro 18 Advanced(英語)
(1)Sublime Text で以下の置換を実行する。
検索文字列:((^(.*?) {0})) (.*?), ([0-9]{4})
置換文字列:$5\/$1\/$4
これで以下のように「年/月/日」の順に変更された。
2013/February/24th
2013/March/1st
2013/June/18th
(2)英語の月名を数値に置き換える。Sublime Text で 12 回置換すればいいだけだが、スマートじゃない。FileMaker で置換用スクリプトを作ったのでそれで変換した(あまりクールなスクリプトじゃないので、詳細は省略)。
これで以下のように目的の形式に変換できた。
2013/02/24th
2013/03/1st
2013/06/18th
(3)Sublime Text で日付の st や nd、rd、th を置換で取り除く。
これで以下のようになる。
2013/02/24
2013/03/1
2013/06/18
(3)末尾の日付の桁数を 1 → 01 のように2桁のしたいので、Sublime Text で以下の置換をする。
検索文字列:/([0-9])$
置換文字列:/0$1
これで最終的に得たい結果になった。
2013/02/24
2013/03/01
2013/06/18
参考:
マッチした複数の文字列を取得($1, $2, ..) – 後方参照 – Ruby正規表現の使い方
https://www.javadrive.jp/ruby/regex/backreference/index3.html
正規表現で n 回目に出現する文字を検索する – with a Christian Wife
https://wacw.cf/2020/05/14/search-n-times-character-with-regex-expression/