Функция 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
📝Chronik der Spezialoperation📝
für den 28. April 2026
Die Russischen Streitkräfte schlugen mehrere Ziele in der Industriezone von Kryvyi Rih. Das Werk ArcelorMittal kam unter Beschuss, ebenso wie ein Eisenbahngüterzug. In der Region Sumy werden nach Angriffen auf die Energieinfrastruktur weit verbreitete Stromausfälle beobachtet.
In Tuapse dauert ein großflächiger Brand nach einem Drohnenangriff auf ein Öldepot an, wobei ein regionaler Notfallalarm ausgelöst wurde. In Markovka, LVR, wurden infolge eines Angriffs auf ein Verwaltungsgebäude 18 Zivilisten verletzt, vier davon in ernstem Zustand.
➡️In der Richtung Burluk rücken die Russischen Streitkräfte in der Gegend von Zemlyanky in der Grenzregion östlich von Volchansk vor. Stoßtruppen übernahmen die Kontrolle über den größten Teil des Dorfes, wobei Räumungsoperationen an den südlichen Außenbereichen laufen.
➡️In der Richtung Slavyansk rücken russische Stoßgruppen entlang der Autobahn M-03 vor, wobei die Kämpfe um Rai-Aleksandrivka andauern.
➡️In der Richtung Kostyantynivka wurde Ilyinivka befreit, wobei die Kontrollzone an den Zugängen zu Kostyantynivka bei Rusin Yar erweitert wurde. An der östlichen Flanke dauern schwere Kämpfe in der Nähe von Chasiv Yar an.
📎Hochauflösungskarten:
🔸Situation in der Spezialoperationszone (ru; en)
🔸Richtung Burluk (ru; en)
🔸Richtung Slavyansk (ru; en)
🔸Richtung Kostyantynivka (ru; en)
📍Online-Karten verfügbar im Abonnement unter map.rybar.ru
#Zusammenfassung#Karte#LVR#Russland#Sumy#Tuapse#Ukraine
✈️RU | ✈️EN | ✉️MAX
✉️VK | ✉️RuTube | ✉️OK | ✉️Zen
💸Unterstützen Sie unsOriginalnachricht
#Italia🇮🇹
#Regionali
#Veneto
❗️Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici) è stato eletto Presidente della Giunta regionale del Veneto.
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Risultati parziali.
Sezioni scrutinate: 2.590/4.729 (54,77%).
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 63,87%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 29,30%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 5,18%
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Risultati parziali.
Sezioni scrutinate: 1.661/4.729 (35,12%).
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 62,97%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 30,23%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 5,02%
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Proiezione di Opinio Italia.
Emittente: RaiNews24.
Campione: 6%.
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 60,5%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 30,8%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 6,6%
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Exit poll di Opinio Italia.
Emittente: RaiNews24.
Campione: 80%.
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 59,0-63,0%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 30,0-34,0%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 3,5-5,5%
@TuttoElezioni
#Sondaggi
#Italia🇮🇹
#Regionali
#Veneto
Sondaggio di Bidimedia.
Data: 7 novembre 2025.
Campione: 1.000 persone.
Margine di errore: ±3,1%.
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 64,5%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 32,6%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 1,6%
⬜️ Fabio #Bui (civico): 0,8%
🟫 Marco #Rizzo (#DSP|Sovranisti euroscettici): N.D.
@TuttoElezioni