日付に関する正規表現

日付を絞る正規表現が意外と思いつかなかったんだよね

日付は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

正規表現を知識と分かっていても、その組合せに気づくには知恵が必要という好例でした。

コメント

このブログの人気の投稿

リモートワークをLogicoolのマウスとキーボードで複数PC切り替えて優勝した

VBAでのInterfaceやキャスト

SUPERHOTがいかにSUPERHOTか語りたい