社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

正規表現を使うなら、ターゲットテキストをよく理解する

2019年11月15日を表現する場合、以下のように色々なパターンが考えられる。

file.txt

2019/11/15
2019-11-15
2019 11/15

これらを含む行を正規表現で検索するとなった場合、どのような方法があるか。

$ egrep '2019[-/" "]11[-/" "]14' file.txt
2019/11/14
2019-11-14
2019 11/14

このように考えられうる文字を直接指定することができるが、見た目があまりよくない。

そこでもし、このテキストには似たようなパターンしか存在しないことが理解できていれば
以下のようにシンプルな正規表現でマッチさせることも可能。

$ egrep '2019.11.14' file.txt
2019/11/14
2019-11-14
2019 11/14

以下のような文字列までマッチしてしまうことになるが、このような文字列は存在しないことが予め分かっていれば気にする必要がない。
2019511314