Функция sub в regex может принимать функцию в качестве аргумента repl.
📄 Из документации:
If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.
То есть для каждого совпадения будет вызвана функция для вычисления замены вместо замены на одну и ту же строку для всех совпадений.
Иными словами, для замены разных совпадений на разные строки не потребуется запускать re.sub() много раз для каждой строки замены. Достаточно определить функцию, которая вернёт строку для каждого из совпадений.
Описание слишком запутанное🤔, давайте лучше рассмотрим на простом примере:
Создаем карту замены. То есть какие строки на какие требуется менять.
remap = {
'раз': '1',
'два': '2',
'три': '3',
'четыре': '4',
'пять': '5',
}
Пишем функцию поиска строки для замены. Единственным аргументом будет объект re.Match.
Используя данные этого объекта мы вычисляем замену on-the-fly!
def get_str(match: re.Match):
word = match.group(1)
return remap.get(word.lower()) or word
Пример текста.
text = '''Раз Два Три Четыре Пять
Вместе будем мы считать
Пять Четыре Три Два Раз
Мы считать научим вас
'''
Теперь запускаем re.sub и вместо строки замены (repl) подаём имя функции.
(Данный паттерн ищет отдельные слова в тексте)
>>> print(re.sub(r'(\w+)', get_str, text))
1 2 3 4 5
Вместе будем мы считать
5 4 3 2 1
Мы считать научим вас
Думаю, достаточно наглядно 🤓
#libs#regex
🍿#DRIFT Американская юридическая фирма Gibbs Mura объявила о начале расследования по поводу возможного коллективного иска в связи с взломом Drift Protocol. Расследование будет сосредоточено на том, приняла ли Circle своевременные меры по заморозке средств. Фирма заявила, что в настоящее время собирает информацию от пострадавших инвесторов и оценивает целесообразность подачи иска против Circle за непринятие действий по предотвращению потери средств.
#DRIFT запампился на >100% на новости. С утра он не покидает топы по спотовым и фьючерсным покупкам на всех CEX. Примечательно, что крупные покупки начались лишь спустя несколько часов после опубликования новости в боте в 2:25 по мск.
📊Chart👈
🏴☠️#DRIFT The fallout from the Drift incident continues to expand, with the number of affected protocols growing from 11 to 20, including PiggyBank, Perena, Vectis, Valeo, Amp Pay, Loopscale, Prime Numbers Fi, Gauntlet and Expent. Prime Numbers Fi is estimated to have lost >$10 million. Wublockchain
💸#DRIFT Проект Drift Protocol привлекает$127,500,000 от Tether для восстановления средств пользователей после взлома.
Еще $20,000,000 помощи выделят другие партнеры.
Ранее: взлом на $285m
Crypto Headlines
#DRIFT
Drift: атака 1 апреля готовилась около полугода и, вероятно, связана с северокорейской группой
Drift сообщила, что продолжает расследование атаки вместе с правоохранителями, Mandiant и ончейн-специалистами. Все оставшиеся функции протокола заморожены, а скомпрометированные кошельки удалены из multisig.
По предварительным выводам, атака готовилась с осени 2025 года.
Злоумышленники выдавали себя за торговую фирму, знакомились с участниками команды на крупных криптоконференциях, вели с ними рабочие обсуждения, создавали общий трек взаимодействия и даже завели на Drift более $1 млн собственного капитала через Ecosystem Vault.
Предполагаемые векторы компрометации:
— один из участников мог заразить устройство после клонирования репозитория, присланного как якобы фронтенд для vault
— второй мог установить через TestFlight приложение, которое выдавали за кошелек
— отдельно Drift допускает связь с известной уязвимостью в VSCode и Cursor, при которой открытие файла или репозитория могло запустить вредоносный код без предупреждения
По оценке Drift и команды SEAL 911, с атакой могут быть связаны те же участники, что стояли за взломом Radiant Capital в октябре 2024 года. Речь идет о группе, которую ранее связывали с UNC4736 / AppleJeus / Citrine Sleet, то есть с инфраструктурой, ассоциируемой с КНДР.
Drift отдельно подчеркивает важный момент: люди, которые лично выходили на связь с командой, скорее всего, не были гражданами КНДР. По версии проекта, для офлайн-контактов могли использоваться посредники с полностью проработанными легендами, карьерной историей и профессиональными профилями.
#DRIFT
Drift взломали через фейковый токен и отключение лимитов на вывод
Атакующий заранее выпустил 750 млн фейковых CVT, создал пул на Raydium с ликвидностью всего около $500 и неделями прогонял через него сделки, чтобы собрать историю цены. Затем через скомпрометированный админский ключ Drift токен добавили как новый spot market.
В той же транзакции лимиты на вывод по USDC и еще четырем рынкам подняли до 500 трлн, фактически отключив защиту. После этого злоумышленник завел 785 млн CVT как залог, нарисовав себе около $785 млн обеспечения при реальной ликвидности пула в районе $700.
С этим фейковым залогом за 12 минут вывели активы почти из всех хранилищ:
— 66,4 млн USDC
— 42,7 млн JLP
— 23,3 млн MOODENG
— 5,6 млн USDT
— 5,2 млн USDS
— 2,6 млн JUP
— 583 тыс. RAY
— 477 тыс. WETH
Дальше средства начали выводить и дробить:
— 103 млн USDC отправили на один адрес
— 42,7 млн JLP сожгли через Jupiter Perps
— остальное обменяли в SOL и раскидали по нескольким кошелькам
#drift
Немного о проекте над которым сейчас работаю в рамках Blockchain Sports Drift - это дрифтовый автопилот. Я как всегда себе верен и для начала создал довольно функциональный инструмент с помощью которого можно отображать телеметрию машины, делать записи и воспроизведения, работать над траекторией и контролировать обучение и всё через юзер-френдли интерфейс. Система работает как с симуляцией Assetto Corsa так и нашей специально подготовленной машиной. Пока я использую традиционные RL алгоритмы, но стараюсь делать платформу гибкой для расширения и использования альтернативных решений в бедующем.
И как врачи и алхимики древности плоды своих исследований я испытываю на себе) Также со мной в испытаниях в роли пилота Мак Кравец, контролирует большую зеленую кнопку (в нашем случае она зеленая) и страхует нас.
И конечно, развитие это проекта это результат совместной и слаженной работы очень грамотных инженеров и менеджеров. По мере развития проекта буду рассказывать о нем под тегом #drift