複雑な文字列パターンをマッチさせる必要がある場合はIF分ではなく正規表現を使うべきだとChat GPTが言ってた
nove-b
March 19, 2023
従来
考えてみたと書いたが、そもそも従来の書き方だとどうしても汚く見えてしまうので、これを機に綺麗にしようという次第である。
で、その従来の書き方といえば、
こんな感じ。
条件が少なければ別にいいけど、条件が多い場合はtarget === 'hoge'を沢山繋いでいく必要がある。
これをもっと綺麗にしたい。
正規表現を使いましょう
これで、わざわざtarget === 'hoge'でつなぐことなく/\芥川龍之介|太宰治\b/に文豪名を増やしていくだけで済むようになった。
Chat GPTは?
考えたコードが本当に正しいか、シンプルか、美しいかの判定ができないので、流行のChat GPTにも考えてもらった。
従来のコードが返ってきた。
しかも文字から作家ってことまで理解してる...。
じゃあ、正規表現についても聞いてみた。
書き方が少し違う。
Chat GPTの書き方だと、
これでもtrueが返ってくる。ここら辺は質問の仕方によるのかしら。 人間が言葉で質問している限り、Chat GPTが必ずしも正解を返すとは限らないので、注意するべきだと肝に銘じた。
最後にChat GPTにIF分を使うべきか正規表現を使うべきか質問してみた。
> これはアプリケーションによって異なりますが、通常は正規表現を使用するべきか、If文を使用するべきかは、比較的短い文字列を比較する場合はIf文を、複雑な文字列パターンをマッチさせる必要がある場合は正規表現を使用する方が良いです。 If文は単純で直感的で、判定処理の流れがわかりやすいです。正規表現は複雑な文字列パターンを扱うことができるため、文字列比較の機能を強化することができます。 つまり、文字列を比較するのに十分なIf文であれば、正規表現を使用する必要はありませんが、複雑な文字列パターンを扱う必要がある場合は、正規表現が有用です。
とのこと。
これは思っていた通りで安心した。
さっき肝に銘じたばかりなのにChat GPTと意見が一致して安心しているあたり、なんだかなといった具合。
AI、あな恐ろし。
Discussion in the ATmosphere