Asayomu Tech
注目★★★★★Lobsters

Luhn検証を正規表現化、巨大regexは最大4823万文字

30秒で把握

  • 1Luhnアルゴリズムを100状態・1000遷移のDFAで検証
  • 2DFAから生成したregexは最大4823万文字・変換に約20分
  • 3grepとripgrepはメモリ不足、Pythonのreは実行可能

要約

この記事は、Luhnアルゴリズムで検査桁を検証する有限オートマトンと正規表現を構成できると論じた。偶数・奇数長の部分和を10で管理するDFAは100状態・1000遷移で実装できる。DFAから正規表現へ変換すると組合せ爆発が起き、生成された正規表現は偶数長用が32,461,605文字、奇数長用が48,236,673文字になった。変換には各約20分かかり、grepとripgrepはメモリ不足で終了した一方、Pythonのreは実行できた。形式上は同等でも、この問題ではDFAが正規表現より大幅にコンパクトになる。

あなたへの影響

データ検証やPIIスキャンを担当する日本のエンジニアは、巨大なregexの導入を避け、まずDFAや通常のコードによる検証を評価すべきです。

推奨:Luhn検証はカードの実在性や決済可否を確認する処理ではありません。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。