はじめに
ネタ記事ですので、お時間のある方推奨です。
スターバックスの新作
みなさんは、最近のスターバックスの期間限定商品をご存知でしょうか。
そう、ご存知の通り「バナナナバナナフラペチーノ」と「チョコバナナナバナナフラペチーノ」です。
(私はそういう華やかなもの?には疎いので、行くまでは知りませんでした。)
行ったタイミングでそれが期間限定だったため、
「バナナナバナナフラペチーノ」注文しようとしたのですが、商品名が随分言いづらい、、、。
そこで私は恥をかかないようにと、小声で「バナナナバナナフラペチーノ」と練習していました。
注文の順番が回ってきましたが、練習のおかげか噛むことなく「バナナナバナナフラペチーノ」と言うことができました。
ですが、注文の復唱は「バナナフラペチーノが一点ですね。」でした。
そこで僕は「おいおい、バナナフラペチーノでも良かったんかい。」ではなく、「バナナフラペチーノだと、普通のバナナフラペチーノとチョコのバナナフラペチーノと区別つかなくない??」と思いました()
正式名称で呼ぶのが面倒なら、省略して尚且つ区別がつくようにしよう
普通の人なら区別がつくでしょう。ですが、私はこんなでもエンジニアの端くれ。
残念ながらこう思ってしまったのです。
[root@tabi ~]# cat banana.txt
バナナナバナナフラペチーノ
チョコバナナナバナナフラペチーノ
[root@tabi ~]# grep "バナナフラペチーノ" banana.txt
バナナナバナナフラペチーノ
チョコバナナナバナナフラペチーノ
ほら、「バナナフラペチーノ」だと、どっちか分からないでしょう。
こんなときは、正規表現を使えば良いのではないでしょうか!
[root@tabi ~]# grep -E "^バナナナバナナフラペチーノ" banana.txt
バナナナバナナフラペチーノ
これだと、「バナナナバナナフラペチーノ」なことは分かりますが、店員さんは省略したいので、省略していきましょう。
[root@tabi ~]# grep -E "^バ(ナ){3}バ(ナ){2}" banana.txt
バナナナバナナフラペチーノ
フラペチーノも無くすことで、かなり短くなりましたね。
ですが、トッピングがある場合は、それと区別ができません。
[root@tabi ~]# cat banana.txt
バナナナバナナフラペチーノ
チョコバナナナバナナフラペチーノ
バナナナバナナフラペチーノ 生クリームトッピング
[root@tabi ~]# grep -E "^バ(ナ){3}バ(ナ){2}" banana.txt
バナナナバナナフラペチーノ
バナナナバナナフラペチーノ 生クリームトッピング
これでバナナナバナナフラペチーノを頼んでいることが分かりますね!
[root@tabi ~]# grep -E "^バ(ナ){3}バ(ナ){2}フラペチーノ$" banana.txt
バナナナバナナフラペチーノ
おわりに
スターバックスさんにこの記事を読んでもらって、
復唱のときは「^バ(ナ){3}バ(ナ){2}フラペチーノ$」と言ってもらうようにしよう。
そもそも、「バナナナバナナフラペチーノ」→「バナナフラペチーノ」、「チョコバナナナバナナフラペチーノ」→「チョコバナナフラペチーノ」だから、さっきの検証は意味がないって?
君のような勘のいい読者は嫌いです笑
.*
とか使いがちですが、正規表現を使うときは、ご注意をという記事でした。
これの方が良いんじゃない?とかそういうのあれば、コメントしていただけますと幸いです。