Рубрики
Без рубрики

Regex для соответствия адресам биткойна

Какие регулярные выражения могут быть использованы для сопоставления адресов биткойнов? Регулярное выражение для проверки адресов биткойнов должно проверить, что строка длиной 26-35 символов, начните с «1» или «3» или «BC1» состоит из прописных или строчных буквенных и числовых символов, и убедитесь, что он не содержит неоднозначных символы. Не допускаются заглавные буквы … Regex для соответствия адресам биткойна Подробнее »

Автор оригинала: Chris.

Какие регулярные выражения Может использоваться для соответствия адресам биткойна?

Регулярное выражение для проверки адресов биткойнов должно проверить, что строка длиной 26-35 символов, начните с «1» или "3" или "BC1" состоит из прописных или строчных буквенных и числовых символов, и убедиться, что он не содержит неоднозначных символов. Не допускается заглавная буква «О» , заглавная буква "Я" , строчные буквы "L" и число "0" Отказ

Следующее регулярное выражение удовлетворяет этим условиям:

([13]|bc1)[A-HJ-NP-Za-km-z1-9]{27,34}

Он состоит из следующих частей:

  • Часть ([13] | BC1) Учитывает, соответствует ли префикс строки символа '1' , '3' или 'bc1' Отказ Не стесняйтесь погрузиться глубже в Наборы персонажей и логичность или соотношение на регулярных выражениях.
  • Часть [A-HJ-NP-ZA-KM-Z1-9] соответствует одному буквенно-цифровому символу, кроме «О» , "Я" , "L" и "0" Отказ
  • Часть {27, 34} называется квантификатор И это соответствует 27 до 34 повторений предыдущего регулятора.

Вот вот фрагмент кода Python, который показывает, как это Regex может использоваться для тестирования различных строк:

import re

pattern = '([13]|bc1)[A-HJ-NP-Za-km-z1-9]{27,34}'

bitcoin_addresses = [
    '1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2', # True
    '3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy', # True
    'bc1qar1srrr0xfkvy5r643hydnw9re59gtzzwf5mdq' # False ('0' char)
    ]

for addr in bitcoin_addresses:
    print(re.match(pattern, addr))
    

Если вы распечатаете код, вы получите следующий вывод:

# Output:


None

Третья строка в Список не Матч Потому что он содержит символ '0' это не допускается.

Обсуждение

Хотя вышеупомянутое регулярное выражение отфильтрует все строки, которые, безусловно, не совсем совпадают (ложные срабатывания), это позволяет для многих строк, которые никогда не будут допущены в качестве публичных ключей биткойна. Почему? Поскольку адреса биткойнов содержат контрольную сумму, чтобы люди использовали недействительные адреса.

Вот короткое уведомление об этой проблеме контрольной суммы ( Основные моменты мной):

💡 « Некоторые из персонажей Внутри биткойной счета используются в качестве Checksum , чтобы опечатанные ошибки могут быть автоматически найдены и отклонены. Контрольная программа также позволяет программное обеспечение Bitcoin подтвердить, что 33-символьный (или короче) Счет фактически действителен и не просто счет с отсутствующим характером ». (Источник: Bitcoin Wiki )

Если вы хотите принять биткойн в качестве вашего сберегательного прибора, ознакомьтесь с нашей статьей о [статьи], как принять биткойн в качестве активов казначейства.

Вы хотите освоить сверхдержаву Regeex? Проверьте мою новую книгу Самый умный способ изучать регулярные выражения в Python С инновационным 3-ступенчатым подходом для активного обучения: (1) Изучение книги главы, (2) Решите головоломки кода и (3) Смотреть воспроизведение главы видео.

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.