регулярные выражения: найти одинаковое кол-во символов (порядок произвольный)
подскажите каким регулярным выражением можно найти следующу подстроку
0<1 и 2 d в произвольном подядке, но кол-во 1 и 2 должно быть одинаковым>0
например в строке
70011212208012209022211101
должно быть найдено
01121220
02221110
а вот
01220
должно быть проигнарировано потому что 2ек больше 1
Ответы (2 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Регулярным выражением этого не сделать.
def search(s):
i = s.find('0')
while i != -1:
j = s.find('0', i + 1)
if j != -1:
c1 = s.count('1', i + 1, j)
c2 = s.count('2', i + 1, j)
if c1 == c2 and c1 + c2 == j - (i + 1):
yield s[i:j + 1]
i = j
print(*search('70011212208012209022211101'))
00 01121220 02221110
Автор решения: Алексей Р
→ Ссылка
А почему бы не совместить?
import re
text = '70011212208012209022211101'
for t in re.findall(r'(?<=0)[12]*(?=0)', text):
print(f'{("" if t.count("1") == t.count("2") else "не ")}подходит: 0{t}0')
подходит: 00
подходит: 01121220
не подходит: 01220
подходит: 02221110