Juancarlo Añez <apal...@gmail.com> added the comment: The analysis done by Terry bypasses the fact that `search(...)` returns `None` when there is no match, so indexing or calling methods in its result is not safe code.
`findall()` returns an empty list when there is no match. `findalliter()` returns an empty iterator when there is no match. `findfirst()` may return a `default` value when there is no match. If `search()` is proposed to replace `findall()[0]`, then the idiom has to be (depending on the case): m[0] if (m := re.search(...)) else '0' m.groups() if (m := re.search(...)) else '0' In contrast, `findfirst()` returns a value that is the same as `findall()` when there is a match, or a `default` if there is no match. m[0] if (m := re.findall(...)) else '0' Compare with: findfirst(..., default='0') ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue39165> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com