Мне нужно найти, обработать и удалить (одну за другой) любые подстроки, которые соответствуют довольно длинному регулярному выражению:
# p is a compiled regex
# s is a string
while 1:
m = p.match(s)
if m is None:
break
process(m.group(0)) #do something with the matched pattern
s = re.sub(m.group(0), '', s) #remove it from string s
Код выше не подходит по двум причинам:
Не работает, если m.group (0) содержит какие-либо специальные символы регулярного выражения (например, *, + и т. Д.).
Такое ощущение, что я дублирую работу: сначала я ищу строку для регулярного выражения, а затем мне нужно искать ее снова, чтобы удалить.
Какой хороший способ сделать это?