ChatGPTに正規表現の質問

プログラミングをしていると、作成したいコードのイメージはあるのに、あれ?どのようにコードを書いたら良いか忘れてしまって困ることがありました。正規表現なども、よく間違えたり、わからなかったりしますが、複雑であればあるほど、あれこれ試すよりもChatGPTに聞いたほうが手っ取り早いです。簡単な例かもしれませんが、テキストの最初の数字4文字を残して他の部分を削除する正規表現をChatGPTに訊きました。きちんと解説もしてくれるので、勉強にもなります。

テキストから最初の数字4文字以外を削除するには、以下の正規表現を使用します。

^(\d{4}).*

この正規表現は以下の意味です:

  1. ^: 文字列の開始を表す
  2. (\d{4}): 4つの数字(0-9のいずれか)をキャプチャ
  3. .*: それに続く任意の文字をマッチ

置換処理を行う際には、キャプチャした4つの数字だけを残すために、置換パターンとして $1 もしくは \1(環境やツールによる)を使用します。これにより、マッチした4文字の数字以外の全ての文字は削除されます。

例えば、Pythonでの使用例を以下に示します。

import re

text = """  
1726      BrHD            394      △    0   +0.00%      15:00
2153      Jホールディングス           1743      △  17   +0.98%      15:00
"""

replaced_text = re.sub(r'^(\d{4}).*', r'\1', text, flags=re.MULTILINE)
print(replaced_text)

これにより、出力結果は以下のようになります。

1726
2153
ChatGPT-4