Функция 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
‼️💻The Gardiyum hacking group claimed responsibility for cyber attacks on three major institutions in Bahrain through three separate statements.
🔻 According to the group's claims, over the past 24 hours, operations were carried out against the Khaleeji Bank, the Bahrain Stock Exchange, and Gulf Air airlines, resulting in the systems of these entities being rendered inaccessible for consecutive hours.
🔻 Following these attacks, widespread disruption in service delivery occurred, which, according to Gardiyum, has led to significant damage and extensive dissatisfaction.
#Bahrain
🇧🇭‼️The Public Prosecution of the Al Khalifa regime in Bahrain is demanding the death penalty for who took photos from restricted areas after Iranian attacks!
🔺This authority has accused the detainees of "great treason."
🔺The Ministry of Interior of the Al Khalifa regime arrested 12 Bahraini citizens on charges of filming and sharing videos related to the Iranian armed forces' attacks on U.S. military sites.
#Bahrain
#Iran, #Bahrain: Il Ministero dell'Interno del Bahrain ha annunciato il divieto di manifestazioni e assembramenti in luoghi pubblici per motivi di sicurezza relativi al conflitto scaturitosi nel Golfo.
🇧🇭⛔️ The anti-Iran draft resolution proposed by Bahrain was not adopted
🔹The UN Security Council rejected Bahrain's anti-Iran draft resolution on reopening the Strait of Hormuz, with Russia and China casting vetoes.
🔺 The Bahraini draft resolution initially emphasized the use of all necessary means to reopen the Strait of Hormuz—implying military action—and later, after this clause was removed, focused on defensive and proportionate efforts to ensure maritime security. However, Russia and China used their veto power to block its adoption.
➡️ The representatives of Pakistan and Colombia also refrained from participating in the vote.
#Iran#Bahrain
🇧🇭‼️Seyyed Mohammad al-Mousawi, a Bahraini citizen, was martyred today due to injuries sustained from torture in the prison of the Al Khalifa regime. In the released video, the effects of torture and signs of beating are clearly visible on his face and various parts of his body, and evidence of electric shock is also apparent on his body.
— The martyr was from the Al-Muharraq region and was the son of Seyyed Mohsen al-Mousawi, a cleric from the area, who had previously been imprisoned by the Bahraini regime for over 12 years and was released in 2024 on the occasion of Eid; however, he was recently rearrested by the regime.
➡️ Today, Bahrainis gathered in front the family home of the martyr Seyyed Mohammad al-Mousawi and held a funeral procession for his body while chanting slogans pledging covenant with the martyr.
✍️The Al Khalifa regime has recently arrested and imprisoned a number of Bahraini citizens on false charges of cooperating with Iran or photographing the sites of attacks. The deep-rooted rancor and enmity of the Al Khalifa regime toward Iran and Bahrain’s Shia community are the main reasons behind the arrest and killing of innocent Bahraini citizens and the inhumane actions taken against them.
✍️ Following the heavy strikes by Iran’s armed forces against American bases in the country, Bahrain is on the verge of another popular uprising against the Al Khalifa regime. With the support of Iran and the Shia religious authority, the people can overthrow the puppet Al Khalifa regime.
#Iran#Bahrain
🇮🇷#Iran - 🇧🇭#Bahrain: Footage circulating on Iranian channels show the aftermath of an Iranian missile that has struck Bahrain's Petrolum Company in Sitra moments ago.
🇮🇷#Iran - 🇧🇭#Bahrain: Footage showing an Iranian drone hitting a high-rise building in Bahrain, Manama, earlier today.
(via @Osint613 on X & @theleaflet)