日付に関する正規表現
日付を絞る正規表現が意外と思いつかなかったんだよね
日付は1日から31日まであるわけですが、それを表現する正規表現が今ひとつ思いつかず。 二桁の連番の表現ってなかなか難しい
結論を先に言おう
1から31を表現
([1-9]|[12][0-9]|3[01])
一桁を左0詰め表現
(0[1-9]|[12][0-9]|3[01])
8月の表現
日付をYYYYMMDDで表現することとして
202008(0[1-9]|[12][0-9]|3[01])
フォルダの特定など
/home/hoge/202008/202008(0[1-9]|[12][0-9]|3[01])/abc.log
OR表現に悩んでいて無駄なログまで拾っていたのです
カッコとOR表現を使えば、正規表現で連番を表現できるってことに気づくのにだいぶかかったんだよね。
これで、ログ検索とかもだいぶ楽になるかなあ、と思う次第です。
これまでは、15日から24日までのログを取りたいと思っても、OR表現に思い当たらずとりあえず10日代と20日代を全部拾ってたからすごく無駄な時間がかかってたんだよね。
202008[12][0-9].log
これもこういうふうにすると解決しますね。
202008(1[5-9]|2[0-4]).log
正規表現を知識と分かっていても、その組合せに気づくには知恵が必要という好例でした。
コメント
コメントを投稿