Пожалуйста, помогите мне выяснить, является ли это ошибкой в Python (2.6.5), в моей компетенции в написании регулярных выражений или в моем понимании сопоставления с образцом.
(Я принимаю, что возможный ответ«Обнови свой Python».)
Я пытаюсь разобрать токен Yubikey, учитывая дополнительные опции.
Когда я использую это регулярное выражение для сопоставления токена без каких-либо дополнительных дополнений (т. Е. Содержащих только то, что соответствует двум группам захвата), сопоставление завершается неудачно:
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?$'
, то это удастся.
Итак, хорошо, это работает, но я бы подумал, что единственная разница в конечном результате между этими двумярегулярные выражения - это производительность.
Оба Expresso и Regex Coach похожи на оба шаблона.
Что я пропустил?
Вот две строки, которые я тестируюс.
Без дополнительных дополнений (которые могут потерпеть неудачу):
"vvbrentlnccnhgfgrtetilbvckjcegblehfvbihrdcui"
С дополнительными дополнениями (до сих пор не сработало; фактические вкладки показаны здесь как "_")
"_!_8R5Gkruvfgheufhcnhllchgrfiutujfh_"
"_!1U4Knivdgvkfthrd_brvejhudrdnbunellrjjkkccfnggbdng_"
Я попытался воспроизвести его, используя предложение Алекса Мартелли, и оно не дает сбоя в сырой среде Python, поэтому я собираюсь вернуться к своему коду (яна самом деле хакинг на юбики-питоне);Я вернусь через день или около того.
Мои извинения всем.Я не могу воспроизвести проблему.Когда это произошло, я читал ввод с помощью getpass
;Я подозреваю, что на пути возникло случайное нажатие клавиши.
Я собираюсь закрыть вопрос.Если тот, кто проголосовал против, желает убрать свой голос, это справедливо.
Очень жаль.