re.finditer()
возвращает объект итератора, даже если совпадений нет (поэтому if RE_Add0.finditer(each)
всегда будет возвращать True
).Вы должны фактически выполнить итерацию по объекту, чтобы увидеть, есть ли реальные совпадения.
Тогда re.match()
соответствует только в начале строки, а не в любом месте строки, как re.search()
или re.finditer()
do.
В-третьих, это регулярное выражение может быть записано как r"\d{5}(?:[ -]?\d{4})"
.
В-четвертых, всегда используйте необработанные строки с регулярными выражениями.