見出し画像

ポケカデッキコードの正規表現

ポケカ公式サイトで作れるデッキコードの正規表現を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ペアリングメーカーをはじめ他ツールの利用者にも需要があるはずなので制作は続けます。夏季休暇のブーストに期待。


いいなと思ったら応援しよう!