これがPython(2.6.5)のバグであるか、正規表現を作成する能力であるか、またはパターンマッチングの理解であるかを発見するのを手伝ってください。
(考えられる答えは「Pythonをアップグレードする」であることを受け入れます。)
私はYubikeyトークンを解析しようとしており、オプションの追加機能を考慮に入れています。
この正規表現を使用して、オプションの追加機能なしで(つまり、2つのキャプチャグループに一致するもののみを含む)トークンを一致させると、一致は失敗します。
r'^\t?[^a-z0-9]?([cbdefghijklnrtuv1-8]{0,32})\t?([cbdefghijklnrtuv1-8]{32})\t?\r?\n?$'
ただし、最初のグループを欲張りでないものにすると、次のようになります。
r'^\t?[^a-z0-9]?([cbdefghijklnrtuv1-8]{0,32}?)\t?([cbdefghijklnrtuv1-8]{32})\t?\r?\n?$'
成功します。
それで、OK、それは機能していますが、これら2つの正規表現の最終結果の唯一の違いはパフォーマンスだと思いました。
ExpressoとRegexCoachは、どちらも両方のパターンが好きです。
私は何を逃しましたか?
これが私がテストしている2つの文字列です。
オプションの追加機能(失敗する可能性のあるもの)はありません:
"vvbrentlnccnhgfgrtetilbvckjcegblehfvbihrdcui"
オプションのエクストラを使用する場合(これまでのところ失敗していません。実際のタブはここでは「_」として表示されます):
"_!_8R5Gkruvfgheufhcnhllchgrfiutujfh_"
"_!1U4Knivdgvkfthrd_brvejhudrdnbunellrjjkkccfnggbdng_"
Alex Martelliからの提案を使用して再現しようとしましたが、生のPython環境では失敗しないので、コードを再検討します(実際には、yubikey-pythonをハッキングしています)。一日かそこらで報告します。
皆様、お詫び申し上げます。問題を再現できません。getpass
それが起こったとき、私は;を介して入力を読んでいました。偶発的な外国のキーストロークが邪魔になったのではないかと思います。
質問を閉じます。質問に賛成した人が投票を削除したい場合、それは公正です。
本当にごめんなさい。