完全なる雑記です。
ChatGPT、便利ですよね。 何を聞いてもそれっぽく答えてくれる。 何でも自信満々に答えるものだから、何でも正しく聞こえてしまいます。
ChatGPTの回答を鵜呑みにして痛い目を見た人も少なからずいるのでは・・・?と思う今日この頃です。
それでも個人的に、これはChatGPTに聞けば間違いない!と断言できるものがあります。
それは、「正規表現」です。
正規表現とは何かをChatGPTにきいてみました。
くらげ < 正規表現とは、ずばり?
ChatGPT < 正規表現(正規表現、またはRegExとも呼ばれます)は、文字列のパターンを表現するための特殊な文字列です。通常、テキスト処理やパターンマッチングに使用されます。
正規表現は、文字列内でマッチさせたい特定のパターンを指定するために使用されます。これにより、文字列内での検索、置換、抽出などの操作が容易になります。
正規表現は、単純な文字の一致だけでなく、パターン内での文字の繰り返し、任意の文字、文字クラス(例:数字、アルファベットなど)、位置(行の先頭や末尾など)などの複雑なパターンを表現することもできます。
例えば、正規表現を使用してメールアドレスのバリデーションを行うことができます。正しいメールアドレスのパターンを指定することで、不正なメールアドレスをフィルタリングすることができます。
正規表現は、プログラミング言語やテキストエディタなど、さまざまなコンテキストで広く使用されています。各言語やツールには、正規表現を処理するための専用の関数やメソッドが用意されていることが一般的です。
とのことです。素晴らしいですね。
つまり、「文字列のパターンを表現するための特殊な文字列」なんですが、奥が深すぎて、1冊の本になるくらいです。そして使いこなせると、文字列操作でできることの幅がぐっと広がり、それでいてめちゃくちゃスマートです。使いこなせる人は尊敬します。私の本棚にも正規表現の達人になるための本が埃をかぶっています。残念ながら達人には程遠いです。
そんな私ですが、先日Vsoodeを使っていたときのこと。 コピペした文字列の末尾にたくさんの空白がいました。
「邪魔だな」と思い、いそいそ消し始めましたが、コピペした行数が多く、正攻法だと面倒だ。
「選択」タブから「列の選択モード」に変更して消そうと試みましたが、消したい空白の開始位置が一定でない。
こりゃ困ったぞ、と思ったとき、「正規表現があるじゃないか」と思いつきました。
しかし、私は何度も正規表現をマスターしようと思い、挫折してきた身。 それでも正規表現の存在を思いついたことだけでも自分を褒めてあげたい。
ちょっと前だったら、次に検索サイトを開いて「文末の空白を削除する正規表現」と入力して、それっぽいことに言及している記事をひたすら探す作業が始まるところでした。
しかし、今ならChatGPTがあるじゃないか。
そう、私は思うのです。なんでも堂々と答えるChatGPT、間違いをちりばめてくるChatGPT。でも正規表現についてだけは間違いない。
早速「正規表現で末尾の空白をすべて除去するには?」
とプロンプトに入力してみました。
すると
\s+$
との答えが。
・・・いや、これなら自力で思い付けたんじゃないか??
と思ってしまった自分でしたが、それはかの有名なアインシュタインの、E=mc² という公式を見て、「これなら自分でもがんばれば思い付けたんじゃね?」という思いを抱くぐらい馬鹿なことです。
やはり、ChatGPTに聞くのは正規表現に限る。それ以外は5掛けくらいで聞いておくのがいい。知らんけど。
というわけで、Vscodeでは検索・置換に正規表現を使うことができます。 ctl +f で左側の > をクリックし、「.*」みたいなボタンを押すと正規表現を使うことができます。
検索ワードに「\s+$」を、置換ワードに空白を指定してあげれば一瞬でした。各文末の空白が見事に消えました。
やっぱり正規表現はかっこよくてスマートですね。
そして正規表現についてだけはChatGPT先生を99.99%信用することにします。