ポケカデッキコードの正規表現
ポケカ公式サイトで作れるデッキコードの正規表現をtweetしたところ予想より好評でした。
Twitterではすぐに流れてしまうため、残りやすいNoteにも掲載しようと思います。
ではさっそく。
^[0-9a-zA-Z]{6}-[0-9a-zA-Z]{6}-[0-9a-zA-Z]{6}$
後で見返す予感がある人は、ブックマーク代わりに「スキ」していってください。こういったポケカ関連のリバースエンジニアリング的記事をたまに投稿するので、よかったらフォローもお願いします。
デッキコードの構成は普通に使うなら関係ないですが、ごく一部では需要があるようです。
私の場合は自主大会向けにデッキコードの提出補助ツールを製作中で、その入力チェックに使うつもりでした。Tonamelにも最近同じような機能が追加されたそうですね。
正規表現はプログラム言語によって微妙に異なるので、何かに使うときはご注意ください。文字のエスケープが必要な場合もあるはずです。
以下、余談なので興味ある人だけ。
合ってるの?
手持ちのデッキコード1万2千超と照合して、一致することを確認しました。取り漏らしがないこと、余計な文字が含まれていないかもチェック済みです。シティデッキ分析の蓄積が役立ちました。
厳密な仕様は外部からわかりませんが、さすがに大丈夫でしょう。今後、文字数が増えるなど変更がある可能性は否定できませんが。
そもそも正規表現って何?
文字列の構造をプログラムが解釈できるように表現したものです。
例として「0~99」を文字で表するとき、「2桁の整数」という表現が自然です。より正確に書くなら、「1文字目は1から9の数字、ただし省略可能。2文字目が0から9の数字」となるでしょうか。
ですが文章では長くなりますし、プログラムで扱いにくいので正規表現で表すわけです。この場合は「^[1-9]{0,1}[0-9]$」となりますね。
感想
もう少しシンプルな表現も可能ですけれども、可読性優先で作りました。正規表現に詳しくなくても、なんとなく意味が読み取れそうな気がしません?
冒頭で触れたデッキコード提出補助ツールは、1~2月にBXR参加者のデッキ分析を担当した経験から着想を得ました。Googleフォームで提出されたデッキと参加者との名寄せや、訂正登録の扱いが意外と大変なんですよ。
別のツールで先に実現されましたが、TCGペアリングメーカーをはじめ他ツールの利用者にも需要があるはずなので制作は続けます。夏季休暇のブーストに期待。